iOSアプリにUITextFieldがあります。ユーザーがテキストを入力して[戻る]をクリックすると、「resignFirstResponder」を使用したIBActionの呼び出しにより、キーボードが消えます。
ただし、XCodeでは、UIView自体からファイル所有者に行をドラッグすることはできません。UIViewの背景に触れることを、キーボードが消えるIBActionに関連付けるにはどうすればよいですか?
iOSアプリにUITextFieldがあります。ユーザーがテキストを入力して[戻る]をクリックすると、「resignFirstResponder」を使用したIBActionの呼び出しにより、キーボードが消えます。
ただし、XCodeでは、UIView自体からファイル所有者に行をドラッグすることはできません。UIViewの背景に触れることを、キーボードが消えるIBActionに関連付けるにはどうすればよいですか?
UITapGestureRecognizerを使用できます。参照:UITableViewの背景に触れてキーボードを閉じる
したがって、テーブルビューの代わりに、ビューに追加するだけです。
UITapGestureRecognizer *gestureRecognizer = [[[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)] autorelease];
gestureRecognizer.cancelsTouchesInView = NO; //so that action such as clear text field button can be pressed
[self.view addGestureRecognizer:gestureRecognizer];
キーボードを隠す方法があります
- (void) hideKeyboard {
[self.view endEditing:YES];
}
UIViewからファイルの所有者にドラッグして、タッチでアクションを関連付けることができないことにすでに気づきました。
これを回避する方法は、背景ビューのクラスをからに変更し、UIView
そこUIControl
からアクションをコントローラーのメソッドにフックして編集を停止することです。
これは、UIControlがタッチイベントに応答でき、UIViewは応答しないためですが、UIControlはUIViewをサブクラス化するため、UIViewの代わりに使用できます。
この手法を使用したサンプルプロジェクトを少し前に作成しました。のxibsecondViewController
ファイルを見て、背景ビューのクラスを変更し、それをコントローラーのアクションに接続してキーボードを閉じる方法を確認してください。
touchesBegin with Eventを使用して、ビューの編集を終了します。
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self.view endEditing:YES];
}
これを行う簡単な方法の1つは、ビューの背後に大きな透明なUIButtonを作成することです。