J'ai un simple UIButton et je veux faire quelque chose lorsque l'utilisateur le touche, mais qu'il déplace ensuite son doigt en dehors du bouton et qu'il détache l'écran. Il semble donc que je doive écouter l'événement UIControlEventTouchUpOutside.
Dans mon contrôleur de vue, j'ai fait ceci :
UIButton *bt = [[UIButton alloc] initWithFrame:rect];
[bt setBackgroundColor:[UIColor whiteColor]];
[bt addTarget:self action:@selector(onTouchUpOutside) forControlEvents:UIControlEventTouchUpOutside];
[self.view addSubview:bt];
et la méthode d'action correspondante :
- (void)onTouchUpOutside {
NSLog(@"touchUpOutside");
}
Maintenant, devinez quoi ? Je touche le bouton, puis je fais glisser le doigt en dehors de celui-ci, je ne touche pas l'écran et aucun message n'est enregistré. En fait, l'événement UIControlEventTouchUpInside a été enregistré, même si mon doigt n'est pas vraiment au-dessus du bouton. Il semble que je puisse déplacer le doigt à environ 150% de la largeur et de la hauteur autour du bouton tout en le touchant, et le système me dira que le doigt était dans le bouton lorsque je le retire. Mais lorsque je le déplace très loin (= assez loin), j'obtiens le message "touchUpOutside". Alors est-ce que c'est juste une autre folie d'Apple, comme le délai dans -touchesMoved et d'autres choses comme ça ? Ou est-ce que j'ai fait quelque chose de mal ?