Soy bastante nuevo en programació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.¿Cómo implemento UITapGestureRecognizer en mi aplicación?
Respuesta
Ésta es una guía paso a paso sobre cómo implementar reconocedores gesto en su clase:
Conform su clase para
UIGestureRecognizerDelegate
protocolo.Crea una instancia del reconocedor de gestos. Por ejemplo, para crear instancias de 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 gesto para acceder a sus propiedades, por ejemplo, podemos encontrar el estado del reconocedor gesto, como,
UIGestureRecognizerStateBegan
,UIGestureRecognizerStateEnded
, etc.Establecer las propiedades deseadas en el reconocedor gesto instanciada. Por ejemplo, para un
UITapGestureRecognizer
, podemos establecer las propiedadesnumberOfTapsRequired
ynumberOfTouchesRequired
.Agregue el reconocedor de gestos a la vista para la que desea detectar los gestos. En nuestro código de ejemplo (Me gustaría poder compartir ese código para su referencia), añadiremos reconocedores gesto a un imageView con la siguiente línea de código:
[self.imageView addGestureRecognizer:tapGestureRecognizer];
Después de añadir el reconocedor gesto a la vista, establezca la delegar para el reconocedor de gestos, es decir, la clase que manejará todas las cosas del reconocedor de gestos. En nuestro código de ejemplo, que sería como:
tapGestureRecognizer.delegate = self;
Nota: Asignar el delegado después de añadir el reconocedor gesto a la vista. De lo contrario, no se llamará al método de acción.
Lo siento por el formato inadecuado !!! –
Muchas gracias por su ayuda chicos! –
No hay nada de lo que preocuparse. Hay una curva de aprendizaje cuando se trata de formato de marcado. – nhahtdh
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 de 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.")
}
}
}
Correcto, userInteractionEnabled es esencial. ¡Gracias! –
No entiendo por qué es necesario comprobar "recognizer.state == UIGestureRecognizerState.Ended". Probé esto y funciona sin él también. Mi suposición es que lo necesita para el reconocedor de gestos de múltiples pulsaciones, pero para un solo toque, ¿aún lo necesitamos? – plam4u
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")
}
}
- 1. ¿Cómo implemento OpenID en mi aplicación web?
- 2. ¿Cómo implemento una aplicación de escritorio Python?
- 3. ¿Cómo implemento una aplicación ASP.NET MVC3?
- 4. ¿Cómo implemento 'iniciar sesión con google' en mi sitio?
- 5. ¿Cómo implemento intellisense para mi idioma en Visual Studio?
- 6. ¿Cómo implemento el "bloqueo pesimista" en una aplicación asp.net?
- 7. ¿Cómo implemento un cuadro de mensaje en una aplicación Cocoa?
- 8. ¿Cómo implemento mi propio campo estático vacío o cero correctamente?
- 9. Dos UITapGestureRecognizer en el UIView
- 10. ¿Cómo implemento `cat` en Haskell?
- 11. Problema con un UITapGestureRecognizer
- 12. UITapGestureRecognizer no funciona
- 13. UITapGestureRecognizer en la subvista UIScrollView
- 14. ¿Cómo implemento la terminación elegante en Java?
- 15. ¿Cómo implemento una aplicación para iPhone (sin App Store)?
- 16. iOS - UITapGestureRecognizer - Selector con argumentos
- 17. ¿Cómo implemento web2py en PythonAnywhere?
- 18. ¿Cómo implemento IEnumerable?
- 19. ¿Cómo implemento/publico una aplicación web con CruiseControl.NET y MSBuild?
- 20. Múltiples tomas con UITapGestureRecognizer
- 21. ¿Cómo implemento una lista personalizada en Cocoa?
- 22. ¿Cómo pasar el argumento en @selector en UITapGestureRecognizer?
- 23. ¿Cómo implemento MVCC?
- 24. ¿Cómo evitas que UITapGestureRecognizer capture CADA grifo?
- 25. Cómo llamar al método didSelectRowAtIndexPath con UITapGestureRecognizer?
- 26. UITapGestureRecognizer no se inicia en UIView Subclase
- 27. ¿Cómo implemento un servidor OpenID en Rails?
- 28. Conflicto UITapGestureRecognizer en UIView y para UITableView
- 29. detectando dedo arriba/abajo UITapGestureRecognizer
- 30. ¿Cómo implemento un pincel personalizado en WPF?
Ayuda a sí mismo: https://github.com/nhahtdh/PS3/blob/master/Game/GameBlock.m – nhahtdh