UITextFieldリターンキーにアクションを追加する方法


90

ビューにボタンとテキストテキストフィールドがあります。テキストフィールドをクリックすると、キーボードが表示され、テキストフィールドに書き込むことができます。また、ボタンをクリックしてキーボードを閉じることもできます。

[self.inputText resignFirstResponder];

キーボードのリターンキーを有効にしたい。キーボードを押すと、キーボードが消えて何かが起こります。これどうやってするの?


回答:


185

「self」がUITextFieldDelegateinputTextをサブスクライブして初期化することを確認します。

self.inputText.delegate = self;

次のメソッドを「self」に追加します。

- (BOOL)textFieldShouldReturn:(UITextField *)textField {
    if (textField == self.inputText) {
        [textField resignFirstResponder];
        return NO;
    }
    return YES;
}

またはSwiftの場合:

func textFieldShouldReturn(_ textField: UITextField) -> Bool {
    if textField == inputText {
        textField.resignFirstResponder()
        return false
    }
    return true
}

10

Swift 3.0の拡張スタイル

まず、テキストフィールドのデリゲートを設定します。

override func viewDidLoad() {
    super.viewDidLoad()
    self.inputText.delegate = self
}

次にUITextFieldDelegate、View Controllerの拡張機能に準拠します

extension YourViewController: UITextFieldDelegate {
    func textFieldShouldReturn(_ textField: UITextField) -> Bool {
        if textField == inputText {
            textField.resignFirstResponder()
            return false
        }
        return true
    }
}

4

他の答えは正しく機能しますが、私は次のことをすることを好みます:

viewDidLoad()で、

self.textField.addTarget(self, action: #selector(onReturn), for: UIControl.Event.editingDidEndOnExit)

関数を定義します

@IBAction func onReturn() {
    self.textField.resignFirstResponder()
    // do whatever you want...
}

-1

キーボードの完了ボタンがタップされたときにUITextFieldから送信される「primaryActionTriggered」UIEventにTarget-Action UIKitメカニズムを使用します。

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