web-dev-qa-db-ja.com

UITextField-リターンボタンイベントをキャプチャする

UITextFieldの編集中にユーザーが「戻る」キーボードボタンを押したことを検出するにはどうすればよいですか?ユーザーが「戻る」ボタンを押したときにキーボードを閉じるには、これを行う必要があります。

ありがとう。

94
- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    [textField resignFirstResponder];
    return NO;
}

ストーリーボードにデリゲートを設定することを忘れないでください...

enter image description here

207

委任は不要です。ここに1行のライナーがあります。

- (void)viewDidLoad {
    [textField addTarget:textField
                  action:@selector(resignFirstResponder)
        forControlEvents:UIControlEventEditingDidEndOnExit];
}

悲しいことに、ストーリーボードでこれを直接行うことはできません(ストーリーボードでアクションを発行するコントロールにアクションを接続することはできません)が、中間アクションを介して行うことができます。

46
mxcl

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()
}
6
drpawelo

これを行うには、送信されたイベント「終了時に終了しました」を使用してストーリーボードを作成します。

View Controllerサブクラス:

 @IBAction func textFieldDidEndOnExit(textField: UITextField) {
    textField.resignFirstResponder()
}

ストーリーボードで目的のテキストフィールドに:

enter image description here

5
Blake Lockley

UITextFieldDelegateを使用したSwiftバージョン:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    resignFirstResponder()
    return false
}
1
Leo Dabus