2015-04-13 8 views
0

У меня есть ситуация, в которой мне нужно различать, как пользователь нажимает текстовое поле и текстовое поле, получая фокус программно. В этой настройке текстовые поля могут программно получать фокус или через взаимодействие с пользователем. Поэтому 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 никогда не стрелял. Что мне не хватает? Благодаря!

+0

[textField.superview addGestureRecognizer: textTap]; вы уверены, что это действительно значило? Неправильно добавить знак жестов в текстовое поле, а не его просмотр? – heximal

+0

Я пробовал в обоих направлениях, ни работать. Другое сообщение, предлагающее использовать супервизор – Pheepster

ответ

0

UITextField не отправляет события касания, но вы можете сделать подкласс и переопределить метод pointInside: withEvent:.

- (BOOL)pointInside:(CGPoint)point withEvent:(UIEvent *)event { 
    NSLog(@"text field tappped"); 
    return YES; 
} 
Смежные вопросы