Estou detectando se o usuário pressionou por 2 segundos:
UILongPressGestureRecognizer *longPress = [[UILongPressGestureRecognizer alloc]
initWithTarget:self
action:@selector(handleLongPress:)];
longPress.minimumPressDuration = 2.0;
[self addGestureRecognizer:longPress];
[longPress release];
É assim que lida com a pressão longa:
-(void)handleLongPress:(UILongPressGestureRecognizer*)recognizer{
NSLog(@"double oo");
}
O texto "double oo" é impresso duas vezes quando pressiono por mais de 2 segundos. Por que é isso? Como posso corrigir?
fonte
Para verificar o estado do UILongPressGestureRecognizer, adicione uma instrução if no método seletor:
fonte
Você precisa verificar o estado correto, pois existem comportamentos diferentes para cada estado. Muito provavelmente você precisará do
UIGestureRecognizerStateBegan
estado com oUILongPressGestureRecognizer
....
fonte
Apenas tente o seguinte:
Objetivo-C
Swift 2.2:
fonte
Veja como lidar com isso no Swift:
fonte
Swift 3.0:
fonte
seu manipulador de gestos recebe chamadas para cada estado de gesto. então você precisa marcar um estado para cada estado e colocar seu código no estado necessário.
É preciso preferir usar caso de comutação sobre if-else:
fonte