web-dev-qa-db-ja.com

Swift UITextFieldShouldReturn Return Key Tap

(iOS8、Xcode6、Swift)Swiftを使用して、「戻る」ボタンのタップをキャプチャするにはどうすればよいですか?

次のリンクのドキュメントでは、textFieldShouldReturnメソッドの使用を指定しています。

// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool

私が電話を切ったところは、「_ textField」の部分です。 Storyboardを使用してテキストフィールドを作成しました。この特定のテキストフィールドの通知をキャプチャするにはどうすればよいですか?新しいクラスを作成し、このテキストフィールドのデリゲートとして設定する必要がありますか?提出されたテキストに名前を割り当ててから、何らかの方法でそれにフックしますか?

https://developer.Apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn

43
kmiklas
class ViewController: UIViewController,UITextFieldDelegate //set delegate to class

@IBOutlet var txtValue: UITextField //create a textfile variable

override func viewDidLoad() {
   super.viewDidLoad() 
   txtValue.delegate = self //set delegate to textfile 
}

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}
85

この機能を実装する

func textFieldShouldReturn(_ textField: UITextField) -> Bool {   //delegate method
   textField.resignFirstResponder()
   return true
}

そして、デリゲートの場合、tilitiesペイン/ Connections Inspector/delegateを使用して設定し、ViewController(ストーリーボードの黄色のボタン)にドラッグできます

次に、すべてのテキストフィールドにプログラムでデリゲートを設定する必要はありません。

21
sijones

オブジェクトをテキストフィールドのデリゲートとして設定する必要があります。通常、それはテキストフィールドが存在するビューコントローラーです。他のクラスから継承する必要はありません。厳密に言えば、デリゲートを実装する必要はありません(ただし、UITextFieldDelegateを実装すると、少しわかりやすくなります)。

3
Ben Gottlieb

In Swift 4.2およびXcode 10.1

//UITextField delegate method
func textFieldShouldReturn(_ textField: UITextField) -> Bool {

    if textField == TF1 {
        textField.resignFirstResponder()//
        TF2.becomeFirstResponder()//TF2 will respond immediately after TF1 resign.
    } else if textField == TF2  {
        textField.resignFirstResponder()
        TF3.becomeFirstResponder()//TF3 will respond first
    } else if textField == TF3 {
        textField.resignFirstResponder()
    }
    return true
}
1
iOS