Come ottenere la funzionalità di Long Press gesto in iOS 3.2 di seguito
-
14-10-2019 - |
Domanda
UILongPressGesture è disponibile in iOS ver 3.2 e versioni successive. Ma sto cercando di sviluppare applicazioni per la massima compatibilità e, quindi, mira ios ver2.0
Qualcuno può per favore mi guida su come realizzare lungo gesto stampa a ios v2.0
Soluzione
Per un singolo dito, è abbastanza semplice: Inizio di un timer nel metodo touchesBegan
e attivare un'azione quando il timer incendi. Annulla il timer se si ottiene un touchesEnded
prima che si spara. Ecco un'implementazione che utilizza il metodo performSelector:withObject:afterDelay:
.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
[self performSelector:@selector(fireLongPress)
withObject:nil
afterDelay:LONG_PRESS_THRESHOLD];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[NSObject cancelPreviousPerformRequestsWithTarget:self];
}
- (void)fireLongPress {
// do what you want to do
}
Probabilmente anche voler uccidere il timer se le mosse delle dita troppo.
Con multitouch, è un po 'più complicato. Dovrete tenere traccia di quali tocco è che, e decidere cosa fare per esempio quando un dito ha premuto abbastanza a lungo, ma l'altro non è (o capire cosa UILongPressGestureRecognizer
fa).
Altri suggerimenti
implementare i metodi touches...
nella vista. Se una certa quantità di tempo passa tra touchesBegan:withEvent:
e touchesEnded:withEvent:
senza eventi touchesMoved:withEvent:
, si dispone di una pressione prolungata.