Ich versuche, eine Gestenerkenner auf meinem UIImageView von meinen UIViewController-Erweiterungen Methoden hinzuzufügen.Wie Gestenerkennung mit Klassenmethode als Selektor hinzufügen?
Die Methode, die ich schießen soll, wenn das Bild abgegriffen ist eine Klassenmethode in meinen schnellen Erweiterungen erklärt:
class func openPopViewWithText(text: String!) {
print("fire!")
}
ich auch die Wähler aus meinen Erweiterungen Klasse hinzufügen. Dies ist, wie ich die Wahl hinzufügen:
infoImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(UIViewController.openPopViewWithText(_:))))
Und das ist der Fehler, die ich bekomme, wenn ich die Image tippen:
[XXXDisplayStatsViewController openPopViewWithText:]: unrecognized selector sent to instance 0x7fd31520ada0
kompletten Code in meinen Erweiterungen Klasse:
public extension UIViewController {
func addInfoImageViewWithText(infoText: String){
let margins : CGFloat = 30.0
let infoImageView : UIImageView = UIImageView(image: UIImage(named: "info"));
let yOrigin : CGFloat = ((self.view.y + self.view.height) - infoImageView.height) - margins
infoImageView.frame = CGRectMake(margins, yOrigin, infoImageView.width + 5, infoImageView.height + 5)
self.view.insertSubview(infoImageView, atIndex: 0)
self.view.bringSubviewToFront(infoImageView)
infoImageView.userInteractionEnabled = true
infoImageView.addGestureRecognizer(UITapGestureRecognizer(target: self, action: #selector(UIViewController.openPopViewWithText(_:))))
}
class func openPopViewWithText(text: String!) {
print("fire!")
}
}
Ich verstand für das erste Problem. Für das zweite Problem möchte ich nicht auf meine UIViewController-Eigenschaften zugreifen. Ich möchte nur eine generische Methode für alle meine UIViewControllers erstellen, die einen popViewController anzeigen, wenn das Bild angetippt wird. – AnthonyR
Sie können also den 'String'-Typ einfach in' UITapGestureRecognizer' –
'... infoImageView umwandeln. userInteractionEnabled = true infoImageView.addGestureRecognizer (UITapGestureRecognizer (Ziel: selbst, Aktion: #selector (UIViewController.openPopViewWithText (_ :)))) } Klasse func openPopViewWithText (Erkenner: "Feuer" UITapGestureRecognizer) { print() } ' Es löst nicht das Problem Ich habe immer den Fehler, aber ich denke, es kommt von dem Ziel, das ich in addGestureRecognizer-Methode gesetzt habe, habe ich' selbst ', so die ViewCon troller versucht diese Methode 'openPopViewControllerWithText' zu finden, aber da diese Methode eine Klassenmethode ist, kann sie nicht gefunden werden. – AnthonyR