(iOS8、Xcode6、Swift)Swiftを使用して、「戻る」ボタンのタップをキャプチャするにはどうすればよいですか?
次のリンクのドキュメントでは、textFieldShouldReturn
メソッドの使用を指定しています。
// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool
私が電話を切ったところは、「_ textField」の部分です。 Storyboardを使用してテキストフィールドを作成しました。この特定のテキストフィールドの通知をキャプチャするにはどうすればよいですか?新しいクラスを作成し、このテキストフィールドのデリゲートとして設定する必要がありますか?提出されたテキストに名前を割り当ててから、何らかの方法でそれにフックしますか?
https://developer.Apple.com/documentation/uikit/uitextfielddelegate/1619603-textfieldshouldreturn
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
}
この機能を実装する
func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
return true
}
そして、デリゲートの場合、tilitiesペイン/ Connections Inspector/delegateを使用して設定し、ViewController(ストーリーボードの黄色のボタン)にドラッグできます
次に、すべてのテキストフィールドにプログラムでデリゲートを設定する必要はありません。
オブジェクトをテキストフィールドのデリゲートとして設定する必要があります。通常、それはテキストフィールドが存在するビューコントローラーです。他のクラスから継承する必要はありません。厳密に言えば、デリゲートを実装する必要はありません(ただし、UITextFieldDelegateを実装すると、少しわかりやすくなります)。
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
}