2013-10-03 6 views
9

я имею серию imageview расположен, и назначение TapView распознавателя к нему[UITapGestureRecognizer тег]: непризнанный селектор послан к экземпляру

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
             initWithTarget:self action:@selector(action:)]; 
[tapRecognizer setNumberOfTouchesRequired:1]; 
[tapRecognizer setDelegate:self]; 
imageView.userInteractionEnabled = YES; 
[imageView addGestureRecognizer:tapRecognizer]; 

и я определил селектор, как:

-(void) action:(id)sender 
    { 
    NSLog(@"TESTING TAP"); 
    NSLog (@"%d",[sender tag]); 
    } 

Это приводит к сбою, и я получаю сообщение об ошибке как: -

[UITapGestureRecognizer tag]: unrecognized selector sent to instance 0x145d0210

ответ

28

Вы можете использовать это ..

UITapGestureRecognizer *tapRecognizer = [[UITapGestureRecognizer alloc] 
             initWithTarget:self action:@selector(action:)]; 
[tapRecognizer setNumberOfTouchesRequired:1]; 
[tapRecognizer setDelegate:self]; 
imageView.userInteractionEnabled = YES; 
imageView.tag = 1111; 
[imageView addGestureRecognizer:tapRecognizer]; 

И в действии попробуйте это.

-(void) action:(id)sender 
    { 
    NSLog(@"TESTING TAP"); 
    UITapGestureRecognizer *tapRecognizer = (UITapGestureRecognizer *)sender; 
    NSLog (@"%d",[tapRecognizer.view tag]); 
    } 

Explaination:

UITapGestureRecognizer не имеет свойство, как tag. но у него есть свойство view, из этого свойства вы можете получить доступ к представлению, с которым связан UITapGestureRecognizer.

Надеется, что это поможет вам

+0

yup this works:) thank u .... – Wodjefer

+0

Добро пожаловать и не стесняйтесь обращаться за помощью. И, пожалуйста, примите ответ, чтобы другие пользователи могли получить помощь от вашего сообщения. –

+0

спасибо за подробное объяснение –

7

Ни UITapGestureRecognizer, ни UIGestureRecognizer не объявляет объект или способ под названием tag.

Вы не можете использовать его. Вот почему вы получаете ошибку.

Относительно примечания. Мне действительно не нравится использовать tag в целом. Всегда есть лучший способ сделать то, что вы делаете, не используя tag.

+1

cud u plzz предложить лучший способ :) спасибо за комментарий. – Wodjefer

+0

@Wodjefer Что вы пытаетесь сделать с тегом? например, зачем вы его используете? Если я знаю, что я могу попытаться предложить лучший способ. – Fogmeister

+0

На самом деле, у меня есть серия изображений, и когда она просматривает изображение, я получаю предварительный просмотр. Мы имеем в галерее iphone (ios7) – Wodjefer

3

Вы не можете получить tag свойство UITapGestureRecognizer, а вы должны получить в собственность по его мнению, в

Вы можете попробовать,

-(void)action:(id)sender 
    { 
    NSLog(@"TESTING TAP"); 
    NSLog (@"%d",[[sender view]tag]); 

    } 
+0

Большое спасибо за это. Другие методы не работали для меня! – shrishaster

10

Просто Измените метод Selector с following..and он будет работать

tapgesture будет иметь полный вид, который повернутый .. а затем вы можете получить свойство тега от него, как я уже говорил в нижеследующем

-(void)action:(UITapGestureRecognizer *)tapGesture{ 

    NSLog(@"TESTING TAP"); 
     NSLog (@"%d",tapGesture.view.tag); 

    }