(iOS8, Xcode6, Swift) Wie kann ich mit Swift ein Tippen auf die Schaltfläche "Zurück" erfassen?
Das Dokument unter dem folgenden Link gibt die Verwendung der textFieldShouldReturn
-Methode an:
// Swift
@optional func textFieldShouldReturn(_ textField: UITextField!) -> Bool
Wo ich aufgehängt bin, befindet sich im Teil "_ textField". Ich habe das Textfeld mit Storyboard erstellt. Wie erfasse ich Benachrichtigungen für dieses bestimmte Textfeld? Muss ich eine neue Klasse erstellen und als Delegat für dieses Textfeld festlegen? Muss ich dem Text einen Namen zuweisen und ihn dann irgendwie einhaken?
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
}
Implementieren Sie diese Funktion
func textFieldShouldReturn(_ textField: UITextField) -> Bool { //delegate method
textField.resignFirstResponder()
return true
}
Und für Delegierte können Sie über den Bereich Utilities/Connections Inspector/Delegate festlegen und dann auf ViewController ziehen (gelbe Schaltfläche im Storyboard).
Dann müssen Sie den Delegaten nicht programmgesteuert für jedes Textfeld festlegen
Sie müssen ein Objekt als Delegat des Textfelds festlegen. Normalerweise ist dies der Ansichts-Controller, in dem das Textfeld vorhanden ist. Sie müssen keine andere Klasse erben oder streng genommen einen Delegaten implementieren (Sie können jedoch UITextFieldDelegate implementieren, um die Dinge etwas klarer zu machen.)
In Swift 4.2 und 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
}