Swift3 iOS - Comment faire UITapGestureRecognizer la fonction de déclenchement
Je suis en train d'ajouter un UITapGesture
à un UIButton de sorte qu'il sera le déclencheur d'une fonction lors de l'écoute. Je suis à l'aide de Swift 3
et est l'obtention de certains d'erreur:
Résiliation d'application en raison de uncaught exception 'NSInvalidArgumentException', la raison: '-[SwiftRunner.ViewController tapBlurButton]: unrecognized sélecteur envoyé à l'instance 0x149e07610'
C'est à peu près ce que j'ai:
//Swift 3
import UIKit
class ViewController {
@IBOutlet weak var qsBlurButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let tapGesture = UITapGestureRecognizer(target: self, action: Selector(("tapBlurButton")))
qsBlurButton.addGestureRecognizer(tapGesture)
}
func tapBlurButton(sender: UITapGestureRecognizer) {
print("Please Help!")
}
}
- si vous voulez déclencher une fonction à l'aide de UIButton alors vous pouvez aussi utiliser qsBlurButton.addTarget(cible: auto, action: ":FuncName", forControlEvents: TouchUpInside)
Vous devez vous connecter pour publier un commentaire.
À partir de votre code swift 3.0 pour changer votre
selector
syntaxe comme celle-ciet Votre fonction comme ceci
Edit:
Pas l'idée que vous êtes à l'aide de la touche avec robinet de geste, au lieu de l'utilisation intégrée de la méthode
addTarget
de bouton, pas besoin de créer appuyez sur le geste, comme ce@objc func tapBlurButton() ....
Swift 3
Dans le cas où le
func
pour le sélecteur ressemble à ceci (note: il n'a pas un _):Ensuite le sélecteur ressemble à ceci:
Donc le code final pour le sélecteur est-ce:
Si vous ne spécifiez pas que le premier paramètre a
_
, alors vous devez utiliser le nom complet du premier paramètre.Pour ajouter un geste de reconnaissance, vous devez créer un indique quelle fonction appeler:
Puis l'ajouter à l'élément dont vous avez besoin. (Vous êtes à l'aide d'un bouton, et comme d'autres l'ont expliqué les boutons ont leur origine "addTarget" méthodes)
Pour les besoins de l'explication imaginez que vous voulez ajouter à une UIView:
Et n'oubliez pas que certains éléments ne sont pas "utilisateur interactif" par défaut, de sorte que vous pourriez avoir à changer que bien trop:
Dans Swift 4 la fonction a besoin de la @objc déclaration: