У меня есть ситуация, в которой мне нужно различать, как пользователь нажимает текстовое поле и текстовое поле, получая фокус программно. В этой настройке текстовые поля могут программно получать фокус или через взаимодействие с пользователем. Поэтому textShouldBeginEditing не подходит, так как он вызывается независимо от того, является ли событие пользовательским взаимодействием или программным.UITapGestureRecognizer не работает в UITextField
Мои текстовые поля находятся в представлении таблицы, и я пытаюсь установить распознаватели жестов в cellForRowAtIndexPath. Вот мой код из cellForRowAtIndexPath:
if([cell isKindOfClass:[PPTTextCell class]]){
UITapGestureRecognizer *textTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(textTapped:)];
UITextField* textField = (UITextField*)[self getInputControlFromCell:cell];
[textField setUserInteractionEnabled:YES];
[textField.superview addGestureRecognizer:textTap];
}
Метод getInputControlFromCell
возвращает текстовое поле, если он существует в клетке. В том же классе у меня есть следующее:
- (void) textTapped:(UITapGestureRecognizer*)tap {
NSLog(@"text field tappped");
}
При нажатии на текстовое поле, метод textTapped никогда не стрелял. Что мне не хватает? Благодаря!
[textField.superview addGestureRecognizer: textTap]; вы уверены, что это действительно значило? Неправильно добавить знак жестов в текстовое поле, а не его просмотр? – heximal
Я пробовал в обоих направлениях, ни работать. Другое сообщение, предлагающее использовать супервизор – Pheepster