objective-c ios4 xcode4.5

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); }