2013-10-03 22 views
9

ich eine Reihe von imageview angeordnet bin, und Zuweisen einen TapView Erkenner es[UITapGestureRecognizer tag]: Unbekannter Selektor gesendet Instanz

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

und ich habe den Selektor definiert als:

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

Dies wird abgestürzt und ich erhalte Fehlermeldung wie: -

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

Antwort

28

Sie diese verwenden können ..

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

Und in Aktion versuchen dies ..

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

Explaination:

UITapGestureRecognizer hat nicht Eigentum wie tag. aber es hat Eigenschaft view, von dieser Eigenschaft können Sie auf die Ansicht zugreifen, mit der UITapGestureRecognizer angefügt wurde.

Hoffe, dass es Ihnen

helfen mit dem following..and
+0

yup das funktioniert:) danke dir .... – Wodjefer

+0

Willkommen und fühlen Sie sich frei für jede Hilfe. Und bitte akzeptieren Sie die Antwort, so dass andere Benutzer Hilfe von Ihrem Beitrag erhalten können –

+0

Dank für die detaillierte Erklärung –

7

Weder UITapGestureRecognizer noch UIGestureRecognizer deklariert eine Eigenschaft oder Methode namens tag.

Sie können es nicht verwenden. Deshalb erhalten Sie den Fehler.

Auf eine verwandte Anmerkung. Ich mag es wirklich nicht tag im Allgemeinen zu verwenden. Es gibt immer einen besseren Weg zu tun, was Sie tun, ohne tag zu verwenden.

+1

cud u plzz schlug einen besseren Weg :) danke für den Kommentar. – Wodjefer

+0

@Wodjefer Was versuchst du mit "tag" zu machen? Warum benutzen Sie es? Wenn ich weiß, dass ich einen besseren Weg vorschlagen kann. – Fogmeister

+0

Eigentlich habe ich eine Reihe von Bildansicht angeordnet und wenn es durch die Bildansicht scrollen ich schicke die Vorschau .. wie haben wir in iphone Galerie (ios7) – Wodjefer

3

Sie können nicht tag Eigenschaft UITapGestureRecognizer bekommen eher muss man seiner Ansicht Eigentum erhalten,

Sie können versuchen,

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

    } 
+0

Vielen Dank dafür. Die anderen Methoden haben bei mir nicht funktioniert! – shrishaster

10

Sie Ihre Wahlmethode ändern wird es

tapgesture arbeiten die ganze Sicht haben, die angezapft wird .. und dann können Sie die Tag-Eigenschaft erhalten von ihm, wie ich im folgenden

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

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

    }