2012-06-21 5 views

Antwort

30

Beispiel:

UIImageView *myPhoto = [[UIImageView alloc] initWithImage: [UIImage imageNamed:@"tab-me-plese.png"]]; 
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(processTap:)]; 

[myPhoto setTag:1]; //set tag value 
[myPhoto addGestureRecognizer:tap]; 
[myPhoto setUserInteractionEnabled:YES]; 

- (void)processTap:(UIGestureRecognizer *)sender 
{ 
    NSLog(@"tabbed!!"); 
    NSLog(@"%d", sender.view.tag);  
} 
+4

Willkommen bei Stack-Überlauf! Versuchen Sie immer, Ihrem Code eine Erklärung zu geben. –

+1

Wenn Sie nur die 'UIView' benötigen, in der die Geste aufgetreten ist, dann ist dies eine schlecht dokumentierte, aber gültige Antwort. Andernfalls müssen Sie mit dieser Antwort kombinieren: http://stackoverflow.com/questions/11594610/objective-c-storing-hidden-information-into-a-uiview von @nielsbot – SwiftArchitect

+0

Diese Kennzeichnung ist sehr nützlich für die Übergabe von UserData - Nr müssen unordentliche Standortberechnungen machen ... – kfmfe04

3

Es gibt eine gute Antwort auf eine ähnliche Frage an iOS - UITapGestureRecognizer - Selector with Arguments, aber wenn Sie möchten, Daten zu übergeben, die Sie wollen nicht auf die Ansicht befestigen, empfehle ich eine zweite Erstellen Funktion, die Zugriff auf die Daten hat, die Sie benötigen. Zum Beispiel:

UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(passDataToProcessTap)]; 

- (void)passDataToProcessTap { 
    [self processTapWithArgument:self.infoToPass]; 
    // Another option is to use a static variable, 
    // Or if it's not dynamic data, you can just hard code it 
} 

- (void) processTapWithArgument:(id)argument { 
    //do something 
}