Моя проблема с подходом Ezmodius заключается в том, что он зависит от свойства, называемого textField, и мой UIViewController является контроллером, от которого наследуются все остальные мои UIViewController, поэтому мне нужно было реализовать более общий подход: всякий раз, когда текстовое поле находилось в любой UIViewController, который нужно очистить, я реализовал следующее (внутри того же метода gestRecognizer:
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch {
if ([touch.view isKindOfClass:[UITextField class]] ||
([touch.view isKindOfClass:[UIButton class]] && [touch.view.superview isKindOfClass:[UITextField class]]))
{
return NO;
}
return YES;
}
Таким образом, в основном я проверяю, является ли это текстовым полем или кнопкой, суперпредставление которой является текстовым полем (в данном случае, кнопкой очистки внутри текстового поля), и оно работает для меня как обаяние. Я реализовал это в своем базовом классе UIViewController, и он работает для каждой страницы, где это происходит.