¿Cómo implemento el UITAPGestureRecognizer en mi aplicación?

Soy bastante nuevo en la progtwigción y Objective C. Me preguntaba cómo hacer una aplicación que tenga una pantalla en blanco y un temporizador que dure un minuto. Debes tocar tan rápido como puedas y mientras puedas. Me preguntaba cómo implementar el UITapGestureRecognizer en mi código.

Esta es una guía paso a paso sobre cómo implementar reconocedores de gestos en su clase:

  1. Conforme su clase al protocolo UIGestureRecognizerDelegate .

  2. Crea una instancia del reconocedor de gestos. Por ejemplo, para instanciar un UITapGestureRecognizer , haremos:

     UITapGestureRecognizer *tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTapFrom:)]; 

    Aquí, la acción es el selector que manejará el gesto. Aquí, nuestro selector handleTapFrom tendrá el siguiente aspecto:

     - (void) handleTapFrom: (UITapGestureRecognizer *)recognizer { //Code to handle the gesture } 

    El argumento para el selector es el reconocedor de gestos. Podemos utilizar este reconocedor de gestos para acceder a sus propiedades, por ejemplo, podemos encontrar el estado del reconocedor de gestos, como, UIGestureRecognizerStateBegan , UIGestureRecognizerStateEnded , etc.

  3. Establezca las propiedades deseadas en el reconocedor de gestos instanciados. Por ejemplo, para un UITapGestureRecognizer , podemos establecer las propiedades numberOfTapsRequired y numberOfTouchesRequired .

  4. Agregue el reconocedor de gestos a la vista para la que desea detectar los gestos. En nuestro código de muestra (voy a compartir ese código para su referencia), agregaremos reconocedores de gestos a un imageView con la siguiente línea de código:

     [self.imageView addGestureRecognizer:tapGestureRecognizer]; 
  5. Después de agregar el reconocedor de gestos a la vista, configure el delegado para el reconocedor de gestos, es decir, la clase que manejará todo el material del reconocedor de gestos. En nuestro código de ejemplo, sería como:

     tapGestureRecognizer.delegate = self; 

    Nota: asigne el delegado después de agregar el reconocedor de gestos a la vista. De lo contrario, no se llamará al método de acción.

 UITapGestureRecognizer *gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(hideKeyboard)]; [self.tableView addGestureRecognizer:gestureRecognizer]; self.tableView.userInteractionEnabled = YES; gestureRecognizer.cancelsTouchesInView = NO; // this prevents the gesture recognizers to 'block' touches 

Ejemplo en Swift :

 import UIKit class ViewController: UIViewController { @IBOutlet var myUIImageView: UIImageView! override func viewDidLoad() { super.viewDidLoad() let singleTap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: "myUIImageViewTapped:") singleTap.numberOfTapsRequired = 1 singleTap.numberOfTouchesRequired = 1 self.myUIImageView.addGestureRecognizer(singleTap) self.myUIImageView.userInteractionEnabled = true } func myUIImageViewTapped(recognizer: UITapGestureRecognizer) { if(recognizer.state == UIGestureRecognizerState.Ended){ println("myUIImageView has been tapped by the user.") } } } 

Si está trabajando Swift (iOS9) y SpriteKit, intente lo siguiente.

 class GameScene: SKScene { override func didMoveToView(view: SKView) { let singleTap = UITapGestureRecognizer(target:self, action:#selector(self.handleSingleTap:)) singleTap.numberOfTouchesRequired = 1 singleTap.addTarget(self, action:#selector(self.handleSingleTap)) view.userInteractionEnabled = true view.addGestureRecognizer(singleTap) } //event handler func handleSingleTap(sender:UITapGestureRecognizer){ print("tapped") } }