Je veux émuler un appui long sur un bouton, comment puis-je faire cela? Je pense qu'une minuterie est nécessaire. Je vois UILongPressGestureRecognizer
mais comment puis-je utiliser ce type?
Réponses
Trop de publicités?Vous pouvez commencer par la création et la fixation de l' UILongPressGestureRecognizer
exemple pour le bouton.
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longPress:)];
[self.button addGestureRecognizer:longPress];
[longPress release];
Puis de mettre en œuvre la méthode qui gère le geste
- (void)longPress:(UILongPressGestureRecognizer*)gesture {
if ( gesture.state == UIGestureRecognizerStateEnded ) {
NSLog(@"Long Press");
}
}
Maintenant, ce serait l'approche de base. Vous pouvez également définir la durée minimale de la presse et de la façon dont beaucoup d'erreur tolérable. Et notez également que la méthode est appelée quelques fois si vous après avoir reconnu le geste donc, si vous voulez faire quelque chose à la fin de celui-ci, vous aurez pour vérifier son état et de le gérer.
Essaye ça:
L'ajout d'un bouton dans la vue s'est chargé comme ceci
-(void)viewDidLoad
{
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTag:1]; //you can set any integer value as tag number
btn.title = @"Press Me";
[btn setFrame:CGRectMake(50.0, 50.0, 60.0, 60.0)];
// now create a long press gesture
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]initWithTarget:self action:@selector(longPressTap:)];
[btn addGestureRecognizer:longPress];
}
Appelez maintenant la méthode du geste comme ceci
-(void)longPressTap:(id)sender
{
UIGestureRecognizer *recognizer = (UIGestureRecognizer*) sender
//recogniser have all property of button on which you have clicked
//now you can compare button tag with recogniser tag
//view frame for getting the info on which button the click event has been happened
//then compare tag like this
if(recognizer.view.tag == 1)
{
//put your button's click code here
}
//and you can also compare the frame of your button with recogniser's view
CGRect btnRect = CGRectMake(50.0, 50.0, 60.0, 60.0);
if(recogniser.view.frame == btnRect)
{
//put your button's click code here
}
//remember frame comparing is alternative method you dont need
//to write frame comparing code if you are matching the tag number of button
}
Je vous remercie!