recognizer ios swift uigesturerecognizer swift3

Swift3 iOS-Cómo hacer que UITapGestureRecognizer active la función



tap gesture recognizer swift 4 (3)

Desde su código está utilizando swift 3.0, así que cambie la sintaxis de su selector esta manera

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(_:)))

y tu función como esta

func tapBlurButton(_ sender: UITapGestureRecognizer) { print("Please Help!") }

Editar:

No addTarget idea de que está usando un botón con un gesto de toque, en lugar de usar el método incorporado addTarget para el botón, no es necesario crear un gesto de toque como este

qsBlurButton.addTarget(self, action: #selector(self.tapBlurButton(_:)), forControlEvents: .TouchUpInside) func tapBlurButton(_ sender: UIButton) { print("Please Help!") }

Estoy tratando de agregar un UITapGesture a un UIButton para que active una función cuando se toca. Estoy usando Swift 3 y obtengo algún error:

Aplicación finalizada debido a la excepción no detectada ''NSInvalidArgumentException'', razón: ''- [SwiftRunner.ViewController tapBlurButton]: selector no reconocido enviado a la instancia 0x149e07610''

Esto es más o menos lo que tengo:

// 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!") } }


Para agregar un reconocedor de gestos, debe crear uno que indique a qué función llamará:

let tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(self.handleTapFrom(recognizer:)))

Luego agréguelo al elemento que necesita. (Está utilizando un botón y, como otros han explicado, los botones tienen sus métodos nativos ''addTarget'')

Para fines de explicación, imagine que desea agregarlo a una UIView:

self.someView.addGestureRecognizer(tapGestureRecognizer)

Y no olvide que algunos elementos "no son interactivos para el usuario" de manera predeterminada, por lo que es posible que también deba cambiar esa propiedad:

self.someView.isUserInteractionEnabled = true

En Swift 4, la función necesita la declaración @objc:

@objc func handleTapFrom(recognizer : UITapGestureRecognizer) { // Some code... }


Swift 3

En el caso en que la func para el selector se vea así (nota: no tiene un _):

func tapBlurButton(sender: UITapGestureRecognizer) { print("Please Help!") }

Entonces el selector se ve así:

#selector(self.tapBlurButton(sender:))

Entonces el código final para el selector es este:

let tapGesture = UITapGestureRecognizer(target: self, action: #selector(self.tapBlurButton(sender:)))

Si no especifica que el primer parámetro tiene _ , entonces necesita usar el nombre completo del primer parámetro.