J'essaye d'ajouter un geste de robinet à un UIView mais le geste n'est pas reconnu. "IconBadgeView" est un UIView avec une image de taille définie comme passée dans les paramètres.L'événement de geste de tap ne fonctionne pas sur UIView
lazy var cardioVascularIcon : IconBadgeView! = {
let iconBadgeView = IconBadgeView(frame: CGRect(x: 0, y: 0, width: 95, height: 95), data:["big":"db_history"])
let tapEvent = UITapGestureRecognizer(target: self, action: #selector(loadNewView(sender:)))
tapEvent.numberOfTapsRequired = 1
iconBadgeView.translatesAutoresizingMaskIntoConstraints = false
iconBadgeView.isUserInteractionEnabled = true
iconBadgeView.addGestureRecognizer(tapEvent)
}()
Il y a un délégant attaché à la même classe et la fonction est implémentée comme suit:
func loadNewView(sender: UITapGestureRecognizer) {
print("Tapped")
}
La fonction loadNewView n'est pas appelé. Je ne suis pas sûr de ce qui ne va pas ici dans le code. S'il vous plaît, si quelqu'un peut vous aider.
J'ajoute iconBadgeView au superview comme ci-dessous:
override init(frame: CGRect) {
super.init(frame: CGRect.zero)
addSubview(cardioVascularIcon)
cardioVascularIcon.pinToSuperview([.Top])
cardioVascularIcon.pinToSuperview([.Left], constant: 92)
cardioVascularIcon.pinToSuperview([.Right], constant: 92)
}
'let tapEvent = UITapGestureRecognizer (cible: auto, action: #selector (loadNewView (expéditeur :))) tapEvent.addTarget (iconBadgeView, action: #selector (loadNewView (expéditeur :))) ' pourquoi êtes-vous répéter vous ici mon ami lol. si vous deviez créer un geste avec un 'constructeur par défaut 'signifiant' UITapGestureRecognizer() 'alors vous devrez fournir votre sélecteur à cette méthode' addTarget', mais puisque vous utilisez le constructeur personnalisé qui prend un sélecteur et une cible avoir cette deuxième ligne de code :) – Lamar
J'ai essayé de supprimer la ligne en double mais cela n'a pas aidé – user2122178
Avez-vous reçu des erreurs/problème? juste par curiosité avez-vous ajouté ce 'iconBadgeView' dans votre superView? aussi puisque vous désactivez 'translateAutoresizingMaskIntoConstraints' assurez-vous que vous ajoutez ces contraintes si maintenant vous pensez que vous voyez dans sur l'écran et ce n'est pas :) – Lamar