Wenn Sie ein neues Cocoa-Projekt erstellen und per Drag & Drop NSTextField
aus der Objektbibliothek auf Ihren Ansichts-Controller ziehen, der beim Start Ihr erster Controller ist, und sowohl ein @IBAction
(hinzufügen print(called)
) als auch @IBOutlet
die App erstellen und ausführen, wird das nicht angezeigt @IBAction
Methode beim Start aufgerufen.
Wenn Sie dann ein returnauf das Textfeld drücken , wird die Aktion aufgerufen. Dies ist jedoch wichtig, da Sie nach dem Beenden der App und dem erneuten Starten der App feststellen, dass die App @IBAction
aus bestimmten Gründen aufgerufen wird (wenn Sie dies nicht tun, versuchen Sie es ein paar Mal).
Tatsächlich fragte ich mich, warum ich @IBAction
beim Start in meiner Entwicklungs-App immer aufgerufen wurde, und suchte nach Methoden, die es in allen meinen Klassen aufriefen. Später stellte ich jedoch fest, dass dieses seltsame Problem auch dann auftritt, wenn ich ein neues Projekt starte und eine Verbindung herstelle und es versuche Starten und Senden der Aktion einige Male durch Ausprobieren.
Ich stelle auch fest, dass ich fünf neue Projekte erstellt und bestätigt habe, dass dies in allen fünf Projekten geschehen ist.
Warum tritt das auf? Wenn dies der Fehler auf Apples Seite ist, gibt es eine Möglichkeit, die automatische Ausführung von @IBAction
in meinem Projekt zu deaktivieren ?
Ich habe textField.editable = false
zuerst gesetzt und auf textField.editable = true
in gesetzt viewDidAppear:
, aber die Aktion beim Start immer noch ausgelöst. Gibt es eine Möglichkeit, mit dem Problem umzugehen?
Es scheint, dass wenn ich das Fenster schließe, indem ich auf das rote Symbol tippe und die App beende und sie dann erneut aus Xcode heraus starte, das @IBAction
nicht aufgerufen wird. Das ist so seltsam ...
Dies scheint mit der Fensterwiederherstellung unter OS X verbunden zu sein.
Ihr Textfeld wird beim Laden der Ansicht als Ersthelfer festgelegt. Während der Wiederherstellung wird das Fenster zum Ersthelfer. Dadurch tritt das Textfeld als Ersthelfer zurück, wodurch eine Aktion ausgelöst wird.
In IB können Sie die Aktion Ihres Textfelds auf "Nur bei Eingabe senden" einstellen. (Standardmäßig ist es "Bearbeitung beenden".)
Oder Sie können Ihr Fenster nicht wiederherstellen, wenn Sie dies bevorzugen.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen