Ich habe eine UIView und habe eine Tap-Geste hinzugefügt:
let tap = UITapGestureRecognizer(target: self, action: Selector("handleTap:"))
tap.delegate = self
myView.addGesture(tap)
Ich versuche es programmgesteuert in der Testdatei aufzurufen.
sendActionForEvent
Ich benutze diese Funktion, aber sie funktioniert nicht:
myView.sendActionForEvent(UIEvents.touchUpDown)
Es zeigt den nicht erkannten Selektor, der an die Instanz gesendet wurde.
Wie kann ich dieses Problem lösen?
imageView.userInteractionEnabled = true
Sie auch daran, wenn Sie eine Bildansicht verwenden. Ich habe mich zu lange damit beschäftigt.Antworten:
Sie müssen
UITapGestureRecognizer
mit einem Ziel und einer Aktion wie folgt initialisieren :Anschließend sollten Sie den Handler implementieren, der jedes Mal aufgerufen wird, wenn ein Tap-Ereignis auftritt:
Das Aufrufen der Ereignisbehandlungsroutine zur Erkennung von Tap-Gesten ist jetzt so einfach wie das Aufrufen einer Methode:
quelle
tap.delegate = self
wird nicht benötigt, da Sie bereits ein Ziel und eine Aktion festgelegt habenFür alle, die nach einer Swift 3- Lösung suchen
quelle
isUserInteractionEnabled
ist wirklich notwendig? Der Standardwert ist false.view.isUserInteractionEnabled = true
ist der Schlüssel, wenn Ihre Ansicht ImageView oder eine Unterklasse von UIVIew anstelle von UIControl ist.Für Swift 4 :
In Swift 4 müssen Sie explizit angeben, dass die ausgelöste Funktion von Objective-C aus aufgerufen werden kann. Daher müssen Sie auch @objc zu Ihrer handleTap-Funktion hinzufügen.
Siehe @Ali Beadles Antwort hier: Swift 4 Geste hinzufügen: Override vs @objc
quelle
view.isUserInteractionEnabled = true
ist der Schlüssel, wenn Ihre Ansicht ImageView oder eine Unterklasse von UIVIew anstelle von UIControl ist.Nur eine Anmerkung - Vergessen Sie nicht, die Interaktion in der Ansicht zu aktivieren:
quelle
SCHRITT 1
SCHRITT 2
SCHRITT 3
SCHRITT 4
AUSGABE
quelle
Tap-Geste implementieren
Ruft diese Funktion auf, wenn das Tippen erkannt wird.
Update für For Swift 3
quelle
Swift 4
quelle
So funktioniert es in Swift 3:
quelle
Vollständige Antwort für Swift 4
Schritt 1: Erstellen Sie eine Steckdose für die Ansicht
Schritt 2: Definieren Sie eine Tippgeste
Schritt 3: ObjC-Funktion erstellen (wird aufgerufen, wenn die Ansicht getippt wird)
Schritt 4: Fügen Sie in viewDidLoad () Folgendes hinzu
quelle
Swift 5.1 Beispiel für drei Ansichten
Schritt: 1 -> Storyboard-Ansicht hinzufügen und Outlet-Ansicht hinzufügenController UIView
Schritt: 2 -> StoryBoard-Ansichtstag hinzufügen
Schritt: 3 -> Geste hinzufügen
Schritt: 4 -> Ansicht auswählen
quelle
Ich habe schnell an Xcode 6.4 gearbeitet. Siehe unten.
quelle
Wenn Sie möchten, dass der Ziel-C-Code unten angegeben ist,
oder Sie möchten schnellen Code ist unten angegeben,
quelle
Sie müssen UITapGestureRecognizer mit einem Ziel und einer Aktion wie folgt initialisieren:
Anschließend sollten Sie den Handler implementieren, der jedes Mal aufgerufen wird, wenn ein Tap-Ereignis auftritt:
quelle
quelle
Swift 4
Erstellen Sie zunächst ein Objekt von UITapGestureRecognizer
Der zweite Schritt ist die Initialisierung von UITapGestureReconizer. Aktivieren Sie die Benutzerinteraktion und fügen Sie sie hinzu.
Drittens erstellen Sie eine Methode
quelle
Versuchen Sie die folgende Erweiterung
und dann benutze es:
Sie können es sogar für Zellen verwenden
quelle
Ich habe an Xcode 7.3.1 auf Swift 2.2 gearbeitet. Siehe unten.
quelle
addTapGesture()
in IhremviewDidLoad()
Ich wollte zwei Punkte angeben, die mir immer wieder Probleme bereiteten.
quelle
xCode 9.3, Swift 4.0
quelle
Innerhalb von ViewDidLoad
quelle
Hier ist der einfachste Weg, um in Swift 5 Gesten in der Ansicht hinzuzufügen
quelle
Versuchen Sie den folgenden schnellen Code (getestet in Xcode 6.3.1):
Beachten Sie, dass Ihr Ziel eine beliebige Unterklasse von UIResponder sein kann, siehe (getestet in Xcode 6.3.1):
quelle
Anstatt den UITapGestureRecognizer von myView aufzurufen, können Sie die
handleTap
Funktion direkt aufrufen .quelle