Ich versuche, UIImageView
einer Aktion eine zuzuweisen , wenn der Benutzer darauf tippt.
Ich weiß, wie man eine Aktion für a erstellt UIButton
, aber wie kann ich das gleiche Verhalten von a nachahmen UIButton
, aber a verwenden UIImageView
?
ios
swift
uiimageview
user3706773
quelle
quelle
@objc
der Funktion einen Modifikator hinzufügen .Sie müssen eine Gestenerkennung hinzufügen (für die Verwendung durch Tippen UITapGestureRecognizer , zum Tippen und Halten verwenden Sie UILongPressGestureRecognizer ) zu Ihrem hinzufügen
UIImageView
.Und implementieren Sie die Auswahlmethode wie folgt:
quelle
Sie können eine hinzufügen
UITapGestureRecognizer
der imageView , indem Sie eine in Ihr Storyboard / xib ziehen, bei gedrückter Strg-Taste aus der imageView in den gestureRecognizer und bei gedrückter Strg-Taste aus der gestureRecognizer in die Swift-Datei ziehen, um eine zu erstellenIBAction
.Sie müssen auch Benutzerinteraktionen auf dem aktivieren
UIImageView
, wie in diesem Bild gezeigt:quelle
UIImageView
reagiert standardmäßig nicht auf Berührungen. Sie müssen auch Benutzerinteraktionen aktivieren.Für Swift 2.0 und höher tun Sie dies
quelle
Swift4 Code
Probieren Sie einige neue Erweiterungsmethoden aus:
Wann immer wir
UITapGestureRecognizer
einUIView
oder eineUIView
Unterklasse wie hinzufügen möchtenUIImageView
, können wir dies tun, ohne zugehörige Funktionen für Selektoren zu erstellen!Verwendung:
quelle
Sie könnten das Bild des einfach auf das einstellen
UIButton
, was Sie normalerweise in ein Bild einfügen würdenUIImageView
. Zum Beispiel, wo Sie tun würden:Sie könnten stattdessen verwenden:
So könnte Ihr Code aussehen:
Das Tolle an dieser Methode ist, dass Sie, wenn Sie das Bild aus einer Datenbank laden müssen, den Titel der Schaltfläche festlegen können, bevor Sie das Bild festlegen:
Um Ihren Benutzern mitzuteilen, dass Sie das Bild laden
quelle
Sie müssen faul hinzufügen, damit TapGestureRecognizer registriert wird,
da das 'Selbst' in UITapGestureRecognizer (Ziel: Selbst ...) gleich Null ist, wenn es sich nicht um eine faule Variable handelt. Selbst wenn Sie isUserInteractionEnable = true festlegen, wird es ohne Lazy Var nicht registriert.
quelle
Sie können ein Bild
UIButton
mit einem transparenten Hintergrund überUIImageView
das Bild legen und auf die Schaltfläche tippen, bevor Sie das Bild ladenquelle
Swift 4 Code
Schritt 1 In ViewdidLoad ()
Schritt 2 Fügen Sie die folgende Funktion hinzu
Es ist getestet und funktioniert richtig
quelle
Ich schlage vor, eine unsichtbare Schaltfläche (Deckkraft = 0) in Ihrer Bildansicht zu platzieren und dann die Interaktion auf der Schaltfläche durchzuführen.
quelle