【Objective-C】UITextField以外をタップしたらキーボードを消す一番簡単な方法
入力欄以外をタップした時に、キーボードを消す一番簡単な方法。
ジェスチャーイベント等の追加は不要。
環境
Xcode6.1.1 Objective-C
ViewController.m
UIViewControllerはUIResponderを継承しているので、タップを検知する touchBegan:withEvent:
が使用できる。
@interface ViewController () // UITextField @property (weak, nonatomic) IBOutlet UITextField *searchField; @end @implementation ViewController // これを追加 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { // キーボードが表示:消す if (_searchField.isFirstResponder) { [_searchField resignFirstResponder]; //[self.view endEditing:YES]; // こちらでもOK } // キーボードが非表示:表示する else { [_searchField becomeFirstResponder]; } } @end
教訓
継承を意識する。
補足:キーボードの改行で非表示にする
UITextFieldDelegate
を使う。
// ViewController.hに<UITextFieldDelegate>追加 @interface ViewController : UIViewController<UITextFieldDelegate> @end
@implementation ViewController // デリゲートメソッド(改行キータップ時) - (BOOL)textFieldShouldReturn:(UITextField *)textField { [_searchField resignFirstResponder]; return YES; } @end