Така че имам UITextView, който използвам, за да направя подвижен етикет, който може да се редактира (предишните ми търсения на SO показаха, че това очевидно е най-добрият вариант). Трябва да накарам потребителя да докосне два пъти, за да активира редактирането и да го настроя да стане първият отговор. Не мога да намеря начин да направя това и всичките ми други търсения са показали или остарели отговори, или неясни отговори. Нищо, което съм опитвал, изглежда не работи. Опитах да използвам UITextViewDelegate
, за да започна редактирането, вместо да избирам текст с помощта на textViewDidChangeSelection:
, но не работи, докато не промените текущия избор. Опитах също да използвам персонализиран UITapGestureRecognizer
така:
UITapGestureRecognizer *doubleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doubleTap:)];
[doubleTap setNumberOfTapsRequired:2];
[doubleTap setNumberOfTouchesRequired:1];
[newLabel addGestureRecognizer:doubleTap];
-(void)doubleTap:(UITapGestureRecognizer *)sender
{
NSLog(@"Double tap detected");
NSLog(@"Sender view of class %@", [[sender view] class]);
UITextView *tappedView = (UITextView *)[sender view];
[tappedView setEditable:YES];
[tappedView becomeFirstResponder];
// [tappedView setEditable:NO];
}
Жестът с двойно докосване никога не се извиква. Не съм сигурен защо. Странно, но също така не избира текст, докато е така. Изглежда просто прекъсва жестовете с двойно докосване. Има ли начин да се отървете от стандартния жест за избор с двойно докосване или да го промените? Трябва ли да подкласифицирам UITextView и ако да, какво бих променил?