Ich möchte wissen, wie Sie eine Aktion zulassen, indem Sie entweder die Eingabetaste auf der Softwaretastatur drücken oder auf einen UIButton tippen.
Die UI-Schaltfläche ist bereits für die Durchführung einer IBAction eingerichtet.
Wie erlaube ich Benutzern auch, die Eingabetaste auf der Tastatur zu drücken, um dieselbe Aktion auszuführen?
AKTUALISIEREN
Wenn Ihr Bereitstellungsziel iOS 9.0 oder höher ist, können Sie das Ereignis "Primäre Aktion ausgelöst" Ihres Textfelds mit einer Aktion wie der folgenden verbinden:
ORIGINAL
Lassen Sie Ihren View Controller das
UITextFieldDelegate
Protokoll übernehmen.Legen Sie den Delegaten Ihres Textfelds für Ihren Ansichts-Controller fest.
Implementieren Sie
textFieldShouldReturn:
, um Ihre Aktion aufzurufen.quelle
Swift 4.2:
Ein anderer Ansatz für das programmgesteuert erstellte Textfeld, für den keine Delegierung erforderlich ist:
MyTextField.addTarget(self, action: #selector(MyTextFielAction) , for: UIControl.Event.primaryActionTriggered)
Und dann führen Sie Ihre Aktion wie folgt aus:
func MyTextFielAction(textField: UITextField) { //YOUR CODE can perform same action as your UIButton }
quelle
Ich konnte die "Ausgelöste primäre Aktion" nicht wie vorgeschlagen zum Laufen bringen. Ich habe "Editing Did End" verwendet und das funktioniert jetzt. Screenshot von Editing Did End
quelle
Hier ist ein vollständiges Beispiel mit beiden:
Tastenaktion zum Schreiben und auch zum Löschen von Beschriftung und Text bei wiederholtem Drücken der Taste wechselt beide Aktionen
Zurück-in-Tastatur beim Drücken der Taste löst es Aktion aus und tritt auch Ersthelfer zurück
class ViewController: UIViewController, UITextFieldDelegate { @IBOutlet weak var textField1: UITextField! @IBOutlet weak var label1: UILabel! var buttonHasBeenPressed = false override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view, typically from a nib. textField1.delegate = self } @IBAction func buttonGo(_ sender: Any) { performAction() } func textFieldShouldReturn(_ textField: UITextField) -> Bool { textField.resignFirstResponder() performAction() return true } func performAction() { buttonHasBeenPressed = !buttonHasBeenPressed if buttonHasBeenPressed == true { label1.text = textField1.text } else { textField1.text = "" label1.text = "" } } }
quelle