web-dev-qa-db-ja.com

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

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

[self.inputText resignFirstResponder];

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

81
razibdeb

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

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
}
168
Ander

Swift 3.0の拡張スタイルを使用

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

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

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

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

他の答えは正しく機能しますが、次のことを行うことを好みます。

ViewDidLoad()で、追加します

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

関数を定義します

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