UITextFieldの編集中にユーザーが「戻る」キーボードボタンを押したことをどのように検出できますか?ユーザーが「戻る」ボタンを押したときにキーボードを閉じるには、これを行う必要があります。
ありがとう。
UITextFieldの編集中にユーザーが「戻る」キーボードボタンを押したことをどのように検出できますか?ユーザーが「戻る」ボタンを押したときにキーボードを閉じるには、これを行う必要があります。
ありがとう。
回答:
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
[textField resignFirstResponder];
return NO;
}
デリゲートをストーリーボードに設定することを忘れないでください...
self.yourTextField.delegate = self;
。複数のテキストフィールドでも機能します。
委任は必要ありません、ここにワンライナーがあります:
- (void)viewDidLoad {
[textField addTarget:textField
action:@selector(resignFirstResponder)
forControlEvents:UIControlEventEditingDidEndOnExit];
}
悲しいことに、ストーリーボードでこれを直接行うことはできません(ストーリーボードでアクションを発生させるコントロールにアクションを接続することはできません)が、中間アクションを介して行うことができます。
UIControlEventEditingDidEndOnExit
場合にのみイベントが送信されることを指摘したいと思いtextFieldShouldReturn:
ます(テキストフィールドを事前に辞任することなく)。
YES
、このメソッドに戻る必要があります。
SWIFT 3.0
override open func viewDidLoad() {
super.viewDidLoad()
textField.addTarget(self, action: #selector(enterPressed), for: .editingDidEndOnExit)
}
enterPressed()関数に、あなたが望むすべての動作を入れます
func enterPressed(){
//do something with typed text if needed
textField.resignFirstResponder()
}
これは、送信されたイベント「終了時に終了」を使用してストーリーボードで実行できます。
あなたのView Controllerサブクラスで:
@IBAction func textFieldDidEndOnExit(textField: UITextField) {
textField.resignFirstResponder()
}
希望のテキストフィールドのストーリーボードで:
- (BOOL)textFieldShouldReturn:(UITextField *)txtField
{
[txtField resignFirstResponder];
return NO;
}
Enterボタンがクリックされると、このデリゲートメソッドが呼び出されます。このデリゲートメソッドからリターンボタンをキャプチャできます。