Вы должны отправить dismissKeyboard
только на тот textField
, который вы сейчас редактируете.
В вашем коде есть утечка памяти. Лучше использовать это:
-(void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(dismissKeyboard)];
[self.view addGestureRecognizer:tap];
[tap release];
}
Чтобы проверить, находится ли UITextField
в настоящее время в edit mode
, вы можете проверить его свойство:
Логическое значение, указывающее, находится ли текстовое поле в данный момент в режиме редактирования. (Только для чтения)
@property(nonatomic, readonly, getter=isEditing) BOOL editing
Например, у вас есть 3 текстовых поля, тогда dismissKeyboard будет выглядеть примерно так:
-(void)dismissKeyboard
{
UITextField *activeTextField = nil;
if ([textField1 isEditing]) activeTextField = textField1;
else if ([textField2 isEditing]) activeTextField = textField2;
else if ([textField3 isEditing]) activeTextField = textField3;
if (activeTextField) [activeTextField resignFirstResponder];
}