2017-11-05 4 views
1

Ich schrieb eine benutzerdefinierte Klasse namens PressableView. Es erkennt Abgriffe und ruft dann eine Protokollfunktion für sein Delegatobjekt auf. Da es sich um eine Unterklasse von UIView handelt, ist die Verbindung von IBAction standardmäßig nicht möglich.
Ich frage mich, ob es möglich ist, eine Funktion innerhalb der View-Controller, die pressbare Ansicht ist in, auf das Objekt zu verbinden, so ruft es diese Methode am Tippen - genau wie Sie mit einem UIButton.Verbinden IBAction mit benutzerdefinierten Klasse

Ich habe bereits versucht, Dinge wie:

class PressableView: UIView { 
    // ... 
    @IBOutlet var action: (() -> Void)? 
    // ... 
} 

... aber Xcode erlaubt es nicht, dass Art ein IBOutlet zu sein.

Irgendwelche Ideen?

Antwort

2

ändern PressableView Elternklasse als UIControl Klasse dann können Sie für Aktionen verbinden und damit umgehen.

UIControl ist eine Unterklasse von UIView Klasse nur. Sie werden also alle Eigenschaften von UIView haben.

class PressableView: UIControl { 
    @IBAction func uicontrolEventAction(_ sender: Any) { 
    } 
} 

enter image description here

enter image description here

+0

Das sieht vielversprechend aus. Kann ich auch selbst festlegen, wann ich eine Funktion aufrufen soll? Sag, ich möchte, dass es nur feuert, wenn du zweimal klopfst? – LinusGeffarth

+0

Ich habe es herausgefunden. Vielen Dank! – LinusGeffarth

+1

jederzeit mein Vergnügen @LinusGeffarth !! Happy Coding !! :) –

Verwandte Themen