Я попробовал многие ответы здесь, и мне не повезло.Мой распознаватель жестов касания всегда заставлял мой UIButtons
не отвечать при касании, даже когда я установил свойство cancelsTouchesInView
распознавателя жестов на NO.
Это то, что в конечном итоге решило проблему:
У вас есть ивар:
UITapGestureRecognizer *_keyboardDismissGestureRecognizer;
Когда текстовое поле начинает редактирование, установите распознаватель жестов:
- (void) textFieldDidBeginEditing:(UITextField *)textField
{
if(_keyboardDismissGestureRecognizer == nil)
{
_keyboardDismissGestureRecognizer = [[[UITapGestureRecognizer alloc]
initWithTarget:self
action:@selector(dismissKeyboard)] autorelease];
_keyboardDismissGestureRecognizer.cancelsTouchesInView = NO;
[self.view addGestureRecognizer:_keyboardDismissGestureRecognizer];
}
}
Тогда дело в том, как настроить dismissKeyboard
Метод:
- (void) dismissKeyboard
{
[self performSelector:@selector(dismissKeyboardSelector) withObject:nil afterDelay:0.01];
}
- (void) dismissKeyboardSelector
{
[self.view endEditing:YES];
[self.view removeGestureRecognizer:_keyboardDismissGestureRecognizer];
_keyboardDismissGestureRecognizer = nil;
}
Я думаю, что есть что-то в том, что касается извлечения dismissKeyboardSelector
выполнения из стека выполнения обработки касанием ...