Question

Je suis juste de dire avec le développement iPhone et ne peut pas sembler trouver la réponse que je suis à la recherche de ce que je veux faire.

Il semble que je devrais être en mesure de créer un programme UIImageView puis mettre en place un gestionnaire d'événements pour ses fonctions tactiles.

c # i aurait quelque chose qui ressemble à

Bouton b = new Button (); b.Click + = mon code de gestionnaire

Actuellement, j'ai cette

CGRect myImageRect = CGRectMake(0.0f, 0.0f, 141.0f, 151.0f);
UIImageView *myImage = [[UIImageView alloc] initWithFrame:myImageRect];

myImage.userInteractionEnabled = YES;
[myImage setImage:[UIImage imageNamed:@"myImage.png"]];
myImage.opaque = YES; // explicitly opaque for performance
[self.view addSubview:myImage];
[myImage release];

Que dois-je faire pour passer outre les événements tactiles?

Merci

Était-ce utile?

La solution

Il est pas la réponse complète à votre question, je pense que la solution suivante pourrait être mieux que de faire le « invisible bouton-solution » .. simplement la sous-classe de UIImageView et remplacer la méthode suivante:

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

 //your UIImageView has been touched :)

 //event -> "A UIEvent object representing the event to which the touches belong."

 //touches -> "A set of UITouch instances in the event represented by event that    represent the touches in the UITouchPhaseEnded phase."

}

espérons que cette aide ...

Autres conseils

J'ai un MainView avec quelques icônes comme « au sujet » pour ouvrir une vue au sujet. Dans le I ajouté un gestionnaire d'événements pour touchesBegan contrôleur correspondant (MainView). De plus, je dois vérifier quelle vue a été « touché », car il y a plus d'icônes sur la vue. Mon exemple de UIImageView est « aboutImg » et l'interaction utilisateur doit être vérifié. (À savoir le constructeur de l'interface utilisateur -> attributs inspecteur de vue)

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    if ([touch view] == aboutImg){
        [self ShowAbout];
    }
}

Assurez-vous de vérifier les « interactions utilisateur activées ». Ceci est la solution la plus simple

Il suffit d'utiliser une UIButton personnalisée avec l'image comme image de fond.

Je n'ai pas trouvé un moyen de le faire directement avec UIImageView. Mais si vous sous-classe et remplacer la méthode nextResponder pour renvoyer un délégué sous votre contrôle, vous pouvez faire ce que vous êtes après. Exposer le délégué en tant que propriété de la sous-classe et vous pouvez passer un délégué pour les événements tactiles et le changer à tout moment.

Je l'ai vu d'autres réponses suggèrent de mettre un bouton invisible sous le UIImageView, le réglage de la vue de l'image à userInteractionEnabled: NO, et de laisser les touches passer à travers le bouton.

Vous devez rien à voir avec UIImageView, vous pouvez utiliser UIButton de type personnalisée et d'ajouter des retouches action à l'intérieur de lui ... mis button.imageview setImage: i-e:

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
btn.frame = CGRectMake(0,0,100,100); //edit for you own frame
UIImage *img = [UIImage imageNamed:@"myimage.png"];
[button setImage:img forState:UIControlStateNormal];

Si vous voulez aller avec UIImageView, alors vous devez ajouter des gestes à votre imageview. que vous pouvez sous-classe votre UIImageView puis utilisez les événements tactiles.

meilleure façon d'ajouter un événement onclick à un UIImageView ou à un UIView est d'ajouter un robinet geste de reconnaissance à lui.

UIImage *myImage = [UIImage imageNamed:@"myImage.png"];
UIImageView *myImageView = [[UIImageView alloc] initWithImage: myImage];

UITapGestureRecognizer *singleTap = [[UITapGestureRecognizer alloc] initWithTarget:self action: @selector(onImageViewClicked)];
singleTap.numberOfTapsRequired = 1;
singleTap.numberOfTouchesRequired = 1;
[self.myImageView addGestureRecognizer:singleTap];
[self.myImageView setUserInteractionEnabled:YES];
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top