objective c - [UITAPGestureRecognizer tag]: selector no reconocido enviado a la instancia
objective-c ios4 (4)
Ni UITapGestureRecognizer
ni UIGestureRecognizer
declaran una propiedad o método llamado tag
.
No puedes usarlo Es por eso que estás obteniendo el error.
En una nota relacionada. Realmente no me gusta usar tag
en general. Siempre hay una mejor manera de hacer lo que está haciendo sin usar la tag
.
Tengo una serie de imageview
de imageview
dispuestas y le asigno un reconocedor TapView
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(action:)];
[tapRecognizer setNumberOfTouchesRequired:1];
[tapRecognizer setDelegate:self];
imageView.userInteractionEnabled = YES;
[imageView addGestureRecognizer:tapRecognizer];
y he definido el selector como:
-(void) action:(id)sender
{
NSLog(@"TESTING TAP");
NSLog (@"%d",[sender tag]);
}
Esto se estrella y recibo un mensaje de error como:
[UITapGestureRecognizer tag]: unrecognized selector sent to instance 0x145d0210
No puede obtener la propiedad de tag
de UITapGestureRecognizer
lugar de tener que obtener de la propiedad de su vista,
Puedes probar,
-(void)action:(id)sender
{
NSLog(@"TESTING TAP");
NSLog (@"%d",[[sender view]tag]);
}
Puedes usar esto ...
UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc]
initWithTarget:self action:@selector(action:)];
[tapRecognizer setNumberOfTouchesRequired:1];
[tapRecognizer setDelegate:self];
imageView.userInteractionEnabled = YES;
imageView.tag = 1111;
[imageView addGestureRecognizer:tapRecognizer];
Y en acción, intente esto ...
-(void) action:(id)sender
{
NSLog(@"TESTING TAP");
UITapGestureRecognizer *tapRecognizer = (UITapGestureRecognizer *)sender;
NSLog (@"%d",[tapRecognizer.view tag]);
}
Explicación
UITapGestureRecognizer
no tiene propiedad como tag
. pero tiene view
propiedad, desde esta propiedad puede acceder a la vista con la que se adjuntó UITapGestureRecognizer
.
Espero que te ayude
Simplemente cambie su método selector con lo siguiente ... y funcionará
tapgesture tendrá toda la vista que se toca ... y luego puede obtener la propiedad de la etiqueta como lo indiqué en el siguiente
-(void)action:(UITapGestureRecognizer *)tapGesture{
NSLog(@"TESTING TAP");
NSLog (@"%d",tapGesture.view.tag);
}