Problème UIButton Touch up inside

malabar63

Membre confirmé
29 Décembre 2011
35
1
Bonjour,

Voilà, je vais faire une vue simple pour que l'utilisateur puisse m'envoyer un message.
Donc j'ai mit 1 textField pour l'email un textView pour le message et un uitButton pour envoyer le message.

J'ai bien lié tous mes éléments à mon controller et j'ai créé une fonction qui s'exécute sur le touch up inside du uiButton.

Le problème c'est que pour que la fonction soit exécuter il faut que je clique, que je sorte du bouton tout en restant cliqué, que je revienne dedans et que je relache le bouton.

Je ne souhaite pas ça. Je souhaite que la fonction soit utiliser quand l'utilisateur clique et relache directement. Il me semblait que c'était cette événement. Je l'ai déjà utilisé ailleur de cette même façon et tout ce passé bien. Je ne sais pas pourquoi

Auriez-vous une idée?

Merci d'avance,
 
moralité soit tu as deux containers qui overlapent je suis sur que IB te genere un warning ou enleve multitouch dans IB

tu peux faire des tests en utilisant cette methode qui suit

Bloc de code:
...

[[self button] setUserInteractionEnabled:NO];

UITapGestureRecognizer * singleFingerTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
UITapGestureRecognizer * tapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[tapper setNumberOfTapsRequired:1];
[tapper setNumberOfTouchesRequired:2];

UITapGestureRecognizer * doubleTapper = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapped:)];
[doubleTapper setNumberOfTapsRequired:2];
[doubleTapper setNumberOfTouchesRequired:2];

[singleFingerTap requireGestureRecognizerToFail:tapper];
[tapper requireGestureRecognizerToFail:doubleTapper];

[[self view] addGestureRecognizer:singleFingerTap];
[[self view] addGestureRecognizer:tapper];
[[self view] addGestureRecognizer:doubleTapper];

[singleFingerTap release];
[tapper release];
[doubleTapper release];

...

- (void)tapped:(UITapGestureRecognizer *)sender
{
	if ([sender numberOfTapsRequired] == 2) {
		NSLog(@"Double tapped");
	} else if ( [sender numberOfTouchesRequired] == 1 ) { 
		if ([sender state] == UIGestureRecognizerStateEnded ) {
			CGPoint location = [sender locationInView:button];
			if (CGRectContainsPoint([button bounds], location)) {
				[button sendActionsForControlEvents:UIControlEventTouchUpInside];
			}
		} else if ([sender state] == UIGestureRecognizerStateRecognized ) {
			
		}
	} else {
		NSLog(@"Tapped");
	}
}
 
Dernière édition: