Как скрыть цифровую клавиатуру с помощью фона Нажмите?
Я изучаю iOS SDK, используя эту книгу, и в 4 главе, где рассказывается, как скрыть цифровую клавиатуру с помощью фонового нажатия, у меня возникла проблема. Я так и делаю, что автор говорит, но ничего не произошло. Как я могу это сделать? Что говорит автор книги:
1) Создайте новый метод backgroundTap в ViewController.h
- (IBAction)touchBackground:(id)sender;
2) Добавить метод в ViewController.m
-(void)touchBackground:(id)sender{
[nameField resignFirstResponder];
[numberField resignFirstResponder];}
3) Измените идентичность класса объекта View в Interface Builder(как я понимаю в Xcode 4 его элемент управления) с UIView на UIControl
4) Соедините метод TouchDown в списке событий с владельцем файла и проверьте метод backgroundTap.
Это мои примеры кода
PS Прошу прощения за мой английский, я перевел всю информацию из книги на английский, потому что у меня есть русский перевод.
3 ответа
Я думаю, что вы могли бы сделать это проще, просто реализовав такой метод:
- (IBAction)backgroundTouched:(id)sender {
[self.view endEditing:YES];
}
сделать фоновый вид UIControl
вместо UIView
в построителе интерфейса и подключите событие touchsup к этому методу.
Посмотрите на этот небольшой пример проекта. Я сделал именно это в secondViewController
где при касании фона распускается клавиатура. Вы также можете увидеть, как я изменил фон на UIControl
в secondViewController.xib
Что-то, что вы можете попробовать, не меняя фоновый вид, это:
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[nameField resignFirstResponder];
[numberField resignFirstResponder];
}
Возможно, вы выполнили шаг 4 ("метод Connect TouchDown в списке событий с владельцем файла и проверьте метод backgroundTap") неправильно. Включите NSLog в ваш метод touchBackground, чтобы проверить, вызывается ли метод.
-(void)touchBackground:(id)sender{
[nameField resignFirstResponder];
[numberField resignFirstResponder];
NSLog(@"touchBackground was called");
}
Если сообщение ("touchBackground был вызван") не отображается в вашей консоли, значит, вы знаете, что touchBackground не вызывается.