Это очень просто: создайте прозрачный объект UIView, который получает касания в нужной области, а когда касание находится в границах этого представления, вызовите resignFirstResponder.
// somewhere in a view controller
UIView *backgroundView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];
[self.view addSubview:backgroundView];
// in the touchesBegan:withEvent: method, for example
UITouch *touch = [[event allTouches] anyObject];
if ([field isFirstResponder] && [touch view] == backgroundView) {
[field resignFirstResponder];
}
В качестве альтернативы, вы можете пропустить материал backgroundView и просто добавить условный оператор, например, в ваш touchesBegan: withEvent: method:
UITouch *touch = [[event allTouches] anyObject];
if ([field isFirstResponder] && [touch view] != field) {
[field resignFirstResponder];
}
Если касание есть! (не) в пределах field
, затем вы хотите удалить клавиатуру.