Да, есть, хотя я подозреваю, что это нарушит Рекомендации Apple Human Interface Guidelines.
Для этого добавьте следующий метод в файл реализации вашего контроллера представления.Затем сделайте контроллер представления в делегате вашего текстового поля.
- (BOOL) textFieldShouldClear:(UITextField *)textField{
[textField resignFirstResponder];
return YES;
}
Недостатком этого подхода является то, что если вы когда-нибудь захотите предотвратить очистку текстового поля, ваш код станет грязным.Вместо этого вы можете попытаться определить пользовательский метод, а затем подключить его к методу valueDidChange
и проверить наличие пустого значения.
-(IBAction)hideKeyboardFromTextField:(id)sender{
//TODO: Check if the previous value was longer than one character to differentiate
//between backspace and clear.
//check if the editing caused the box to be empty
if([[sender value] isEqualToString:@""] || [sender value] == nil)
[sender resignFirstResponder];
}
}
Проблема здесь в том, что вы не можете легко различить нажатие на кнопку очистки и нажатие на кнопку удаления, когда в UITextField есть один символ.
КакЯ сказал в начале моего ответа, что это не рекомендуется, во-первых, и, как показали ответы здесь, это не так легко реализовать.Я не думаю, что это стоит хлопот, учитывая сложность и того факта, что это не приводит к оптимальному взаимодействию с пользователем.