2011-02-25 2 views
4

J'ai un contrôleur de vue où il y a plusieurs objets uiview. J'ai besoin de savoir sur quel uiview utilisateur a tapé. comment est-ce possible? toute orientation vous aidera beaucoup ....trouver quelle vue a été cliquée

Merci
Pankaj

Répondre

6

Voici ce que vous pouvez faire pour obtenir ce que vous voulez ..... Dans cet exemple, j'ai créé 7 vues

UITapGestureRecognizer* gestureRecognizer; 
UIView* myView; 
for (int i = 0; i < 8; i++) 
{ 
    gestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(doSomthing:)]; 
    gestureRecognizer.numberOfTapsRequired = 1;//or what ever you want 

    myView = [[UIView alloc] initWithFrame:CGRectMake(10, i*30, 30, 28)]; 
    myView.backgroundColor = [UIColor redColor]; 
    myView.tag = 100+i; 
    [self.view addSubview:myView]; 
    [myView addGestureRecognizer:gestureRecognizer]; 
    [myView release]; 
    [gestureRecognizer release]; 
} 

Maintenant, vous devez implémenter la méthode comme celui-ci

-(void)doSomthing:(id)sender 
{ 
    UIView* temp = [(UITapGestureRecognizer*)sender view]; 
    // here you get the view you wanted 
    NSLog(@"view number :%d",temp.tag); 
} 

Je pense que cela devrait vous aider

+0

merci amit vous m'avez vraiment appris quelque chose de nouveau ... – pankaj

0

vous pouvez ajouter des gestes aux objets UIView pour trouver quel objet a été touché. voir la documentation.

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIGestureRecognizer_Class/Reference/Reference.html

pour le code spécifique juste commentaire.

+0

il peut me donner l'emplacement de toucher mais comment vais-je obtenir id de la vue qui a été touché. Il peut y avoir plusieurs vues et je dois effectuer un événement sur la base de la vue sélectionnée par l'utilisateur. – pankaj

0

Vous pouvez probablement ajouter un bouton personnalisé avec une étiquette au-dessus de chaque vue. Ensuite, vous pouvez savoir quelle vue est sélectionnée en fonction de l'étiquette du bouton.

veuillez jeter un coup d'oeil à ceci. Cela peut aider.

http://www.iphonedevsdk.com/forum/iphone-sdk-development/13041-touch-event-subview.html

+0

il me suggère d'ajouter un bouton invisible en dessous de l'uiview. Y at-il un autre moyen, car il semble très étrange d'ajouter autant d'uibuttons inutilement sur ma page. – pankaj

+0

ohkk je l'ai eu ... il m'a fallu du temps mais j'ai découvert ce que tu voulais dire ... merci – pankaj

1

Définir une balise pour chaque point de vue de garder une trace d'eux.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    // We only support single touches, so anyObject retrieves just that touch from touches 
    UITouch *touch = [touches anyObject]; 
    NSLog(@"view %i", [touch view].tag); 
} 
+0

comment ça me dira quelle vue a été tapée. Il y a environ 10-12 vues sur ma page. – pankaj

+0

utilisez le tag pour chaque vue ... NSLog (@ "view% i", [touch view] .tag); – FoJjen

+0

got it thanks beaucoup – pankaj

Questions connexes