Ich möchte ein UILabel anklickbar machen.
Ich habe es versucht, aber es funktioniert nicht:
class DetailViewController: UIViewController {
@IBOutlet weak var tripDetails: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
...
let tap = UITapGestureRecognizer(target: self, action: Selector("tapFunction:"))
tripDetails.addGestureRecognizer(tap)
}
func tapFunction(sender:UITapGestureRecognizer) {
print("tap working")
}
}
ios
swift
uilabel
uitapgesturerecognizer
Daniele B.
quelle
quelle
UILabel
? Sind Sie sicher, dass Sie den Rahmen des Etiketts berühren? Haben Sie eineUIViews
Abdeckung des Etiketts? WirduserInteractionEnabled
gesetztTrue
für das Label?Antworten:
Haben Sie versucht
isUserInteractionEnabled
,true
auf demtripDetails
Etikett zu setzen? Das sollte funktionieren.quelle
Swift 3 Update
Ersetzen
mit
Beispiel:
quelle
@objc
.SWIFT 4 Update
quelle
Swift 3 Update
quelle
Swift 5
Ähnlich wie @liorco, muss jedoch @objc durch @IBAction ersetzen .
Dies funktioniert unter Xcode 10.2.
quelle
@IBAction
wird nur benötigt, um die Methode dem Interface Builder von Xcode (daher IB) zur Verfügung zu stellen. Es funktioniert auch so,@objc
aber wenn Sie die Gesten oder andere Aktionen mit Code hinzufügen, sollten Sie die@objc
Anmerkung verwendenGute und bequeme Lösung:
In Ihrem ViewController:
Sie können dies in Ihrem ViewController oder in einer anderen .swift-Datei (z. B. CustomView.swift) ablegen:
Wählen Sie im Storyboard Label und im rechten Bereich unter "Identity Inspector" in der Feldklasse LabelButton.
Vergessen Sie nicht, im Label Attribute Inspector "Benutzerinteraktion aktiviert" zu aktivieren.
quelle
Sie müssen die Benutzerinteraktion dieses Labels aktivieren .....
Zum Beispiel
yourLabel.userInteractionEnabled = true
quelle
Für Swift 3.0 können Sie auch die Dauer der langen Druckzeit der Geste ändern
quelle
Ziemlich leicht zu übersehen, wie ich es getan habe, aber vergessen Sie nicht, es
UITapGestureRecognizer
eher zu verwenden alsUIGestureRecognizer
.quelle
Wie in der obigen Lösung beschrieben, sollten Sie zuerst die Benutzerinteraktion aktivieren und die Tippgeste hinzufügen
Dieser Code wurde mit getestet
Swift4 - Xcode 9.2
quelle
Cannot invoke initializer for type 'UITapGestureRecognizer' with an argument list of type '(() -> Void)'
wenn ich das versuche.