Ich füge programmgesteuert einen UITapGestureRecognizer zu einer meiner Ansichten hinzu:
let gesture = UITapGestureRecognizer(target: self, action: #selector(self.handleTap(modelObj:myModelObj)))
self.imageView.addGestureRecognizer(gesture)
func handleTap(modelObj: Model) {
// Doing stuff with model object here
}
Das erste Problem, auf das ich gestoßen bin, war "Argument von '#selector' bezieht sich nicht auf eine '@Objc'-Methode, -Eigenschaft oder -Initialisierer.
Cool, also habe ich @objc zur handleTap-Signatur hinzugefügt:
@objc func handleTap(modelObj: Model) {
// Doing stuff with model object here
}
Jetzt erhalte ich die Fehlermeldung "Methode kann nicht als @objc markiert werden, da der Typ des Parameters in Objective-C nicht dargestellt werden kann.
Es ist nur ein Bild der Karte eines Gebäudes, wobei einige Pin-Bilder den Standort von Sonderzielen angeben. Wenn der Benutzer auf einen dieser Pins tippt, möchte ich wissen, auf welchen Punkt von Interesse er getippt hat, und ich habe ein Modellobjekt, das diese Punkte von Interesse beschreibt. Ich verwende dieses Modellobjekt, um dem Pin-Bild die Koordinaten auf der Karte zu geben, sodass ich dachte, es wäre für mich einfach gewesen, das Objekt einfach an den Gestenhandler zu senden.