2016-05-28 11 views
-2

Ich habe mehrere Steuerelemente wie NSTextfields und NSButtons. Ich konnte keine Lösung für das Ausbessern von Ereignissen in swift 2.2 finden. Ich versuchte es mit den neuen Selektoren, aber ich weiß nicht, wie man mit ihnen Berührungsereignisse zu handhaben ... Hier ist mein Code:Klicken Sie in Swift 2.2 OSX

override func viewDidLoad() { 
    textfield.action = #selector(myAction) 
    button.action = #selector(myAction) 
} 

func myAction(sender: NSView) 
{ 
    print("aktuell: \(sender)") 
    currentObject = sender 
} 

Ich bin nicht vertraut mit der neuen Version von Swift 2.2 so habe ich keine Idee, wie man die Berührungsereignisse behandelt. Ich habe auch versucht, mit den Delegiertenmethoden umzugehen, aber das hat auch nicht funktioniert, weil ich keine Methode für die Kontrolle habe, wenn sie berührt wird.

In den älteren Versionen von swift hatte ich so etwas wie:

button.addTarget(self, action: Selector("actionMethod"), forControlEvents: UIControlEvents.TouchUpInside) 

Fehler bei der addTarget Funktion hinzuzufügen versuchen:

Werte vom Typ 'NSButton' hat kein Mitglied 'addTarget'

Aber ich kann das nicht in swift 2.2 finden und es gibt einen Fehler, wenn ich versuche, es zu verwenden. Danke für Hilfe!

ich OSX nicht iOS bin mit aber die gleichen ...

+1

"* Ich benutze OSX nicht iOS, aber das sollte das gleiche sein *". Sie berühren nichts auf OSX, Sie klicken darauf. –

+0

Wissen Sie, wie Sie Aktionen in OS X für Click-Ereignisse hinzufügen? @DanielStorm – Anokrize

Antwort

1

Sie müssen die NSButton ‚s action einzustellen. Zum Beispiel:

let button = NSButton() 
button.target = self 
button.action = #selector(someAction) 

Von NSButton Class Reference:

NSButton ist eine Unterklasse der Klasse NSControl. Ein NSButton-Objekt sendet eine Aktionsnachricht an ein Zielobjekt, z. B. einen Ansichtscontroller, , wenn auf die Schaltfläche geklickt wird.

+0

Funktioniert das auch für Textfelder? – Anokrize

+0

@Anokrize [Klickaktion zu NSTextField hinzufügen] (http://StackOverflow.com/q/5588056/2108547). –

+0

Können Sie es in swift übersetzen? Ich verstehe nicht obj.-c. Danke für die Antwort! – Anokrize

0

Swift2.2 deprecates mit Strings für Selektoren und neue Syntax, stattdessen sollte: #selector.

Zum Beispiel:

button.addTarget(self, action: #selector(actionMethod), forControlEvents: .TouchUpInside)

+0

Ich kann die addTarget-Funktion irgendwie nicht hinzufügen. – Anokrize

+0

siehe Fehler bearbeiten über – Anokrize

+0

vielleicht sollten Sie die Klasse der Schaltfläche überprüfen, ob es "UIControl" oder die Unterklasse von "UIControl" ist. – likumb