En mi programa, tengo un UITapGestureRecognizer
que he inicializado con initWithTarget: action:
. He pasado un selector para llamar a un método con el nombre PlanetTapped: (UIImageView *)aPlanet
. Esto llama al método bien, sin embargo, me gustaría saber cómo pasar argumentos al action:
, como lo haría con performSelector: withObject
. ¿Es esto posible? Tendría sentido permitirle enviar argumentos al selector UIGestureRecognizer
. Cualquier ayuda es apreciada.¿Enviando argumentos al selector de inicialización del reconocedor de gestos?
Respuesta
La firma correcta para el método a llamar sería:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer
entonces se podría acceder a la vista de que recibió el gesto llamando:
-(void) PlanetTapped: (UIGestureRecognizer*)gestureRecognizer {
UIImageView* aPlanet = gestureRecognizer.view;
...
}
De hecho, esto es lo UIGestureRecognizer reference estados:
Un reconocedor de gestos tiene uno o más pares de acción de objetivo asociados. Si hay varios pares objetivo-acción, son discretos y no acumulativos. El reconocimiento de un gesto da como resultado el envío de un mensaje de acción a un objetivo para cada uno de esos pares. Los métodos de acción invocados deben cumplir con una de las siguientes firmas:
- (void) handleGesture;
- (void) handleGesture: (UIGestureRecognizer *) gestureRecognizer;
- (void)viewDidLoad
{
UILongPressGestureRecognizer *longPressRecognizer = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPressOnPhotos:)];
[yourView addGestureRecognizer:longPressRecognizer];
}
- (IBAction)handleLongPressOnPhotos:(UILongPressGestureRecognizer *)sender{
// use "sender.view" to get the "yourView" you have long pressed
}
Esperamos que estos le ayudaría.
En Swift 3.0, la firma de la función es la siguiente (sustituir por otra clase gesto reconocedor según sea apropiado en estos ejemplos):
func myButtonLongTouch(_ sender: UILongPressGestureRecognizer)
hace referencia a esta función cuando la configuración de los reconocedores Gesto de la siguiente manera:
longTouchGesture = UILongPressGestureRecognizer(target: self, action: #selector(myButtonLongTouch(_:)))
Luego, para acceder a la vista (en mi caso, un botón) que se ha pulsado, utilice el código:
if let button = sender.view as? UIButton {
// Your code here
}
Por último, no hay que olvidar que esta función se llama varias veces (por lo general cuando se inicia el gesto y cuando termina), así que es conveniente para comprobar el estado, lo que se puede hacer de la siguiente manera:
if (sender.state == UIGestureRecognizerState.ended) {
// Your code here
}
- 1. reconocedor de gestos del iPad - Respuesta diferida
- 2. ¿Debo liberar un reconocedor de gestos?
- 3. Desactivar reconocedor de gestos multitarea de iOS durante el juego
- 4. ¿Enviando argumentos al trabajador de fondo?
- 5. ¿Cómo detectar el gesto circular a través del Reconocedor de gestos?
- 6. ¿Cómo agregar el reconocedor de gestos a una vista de UIImage?
- 7. Agregar funcionalidad al reconocedor de reconocimiento de movimiento estándar en UIScrollView
- 8. acciones reconocedor y botón Gesto
- 9. Enviando mensaje al objeto usando selector y NSSelectorFromString
- 10. Argumentos en @selector
- 11. @selector - ¿Con múltiples argumentos?
- 12. iOS - UITapGestureRecognizer - Selector con argumentos
- 13. @selector con múltiples argumentos
- 14. Desactivar reconocedor gesto
- 15. Manejo de reconocedores de gestos en iOS6
- 16. Enviando la imagen del cliente al servidor
- 17. Enviando STDERR al registrador
- 18. Identificador de gestos de barrido adecuado iOS
- 19. ¿Cómo pasar argumentos en @selector?
- 20. Múltiples gestos para UIGestureRecognizers (iPhone, Cocos2d)
- 21. objeto de inicialización Raphael con selector de jQuery
- 22. Problema de gestos: UISwipeGestureRecognizer + UISlider
- 23. inicialización del conjunto de cadenas
- 24. llamando al selector de jquery
- 25. Pasando argumentos del constructor al usar StructureMap
- 26. Gestos avanzados de iOS: obtención del vector de dirección deslizante
- 27. Dando argumentos al objetivo de recursos de maven del eclipse
- 28. Inicialización del valor de C++
- 29. UIPanGestureRecognizer en UITableViewCell anula vista de desplazamiento gesto reconocedor de UITableView
- 30. Lista de inicialización del constructor con inicialización vacía
Ahh, por supuesto. Debería haber pensado en eso. ¡Gracias por tu ayuda! – Fitzy