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


101

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

ありがとう。

回答:


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

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

ここに画像の説明を入力してください


47
ビューコントローラがテキストフィールドのデリゲートとして設定されていることを確認してください。
ゼケル

1
ありがとうございました。私はデリゲートを経由で設定しましたself.yourTextField.delegate = self;。複数のテキストフィールドでも機能します。
haxpor

@Praxitelesこれは、委任を必要とせずにストーリーボードで実行できるようになりました。以下の回答を確認してください。
Blake Lockley、2018

51

委任は必要ありません、ここにワンライナーがあります:

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

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


1
デリゲートメソッドがYESを返したUIControlEventEditingDidEndOnExit場合にのみイベントが送信されることを指摘したいと思いtextFieldShouldReturn:ます(テキストフィールドを事前に辞任することなく)。
alex-i 2015

委任を実装する必要はありません。しかし、もしそうならYES、このメソッドに戻る必要があります。
mxcl 2015

9

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

8

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

あなたのView Controllerサブクラスで:

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

希望のテキストフィールドのストーリーボードで:

ここに画像の説明を入力してください


これが正解です。
Psiloc

3

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

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

2

スウィフト5

textField.addTarget(textField, action: #selector(resignFirstResponder), for: .editingDidEndOnExit)

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

Enterボタンがクリックされると、このデリゲートメソッドが呼び出されます。このデリゲートメソッドからリターンボタンをキャプチャできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.