Uibutton Long Press con Finger Stationary
Domanda
Nel mio progetto ho la necessità di utilizzare un UIButton (o un altro componente) per gestire gli eventi usando Long Press. Lasciatemi spiegare, dovrei fare quella mente che tengo il pulsante un timer per contare i secondi e rilascio per arresto, ho provato con la gestione di UilongPressGestureureCognizer ma non è il caso perché ricordo l'evento quando il pulsante è tenuto giù Solo se muovo il dito, ma vorrei che il timer andasse via e contasse tutto il tempo in cui il pulsante viene tenuto giù (con il dito stazionario) e smetteva di contare quando il dito viene rilasciato.
Qualcuno sa come aiutarmi? Grazie
Soluzione
Usa questi due metodi per eventi pulsanti. touchDown
si chiama quando si preme il pulsante e touchUp
verrà chiamato quando sollevi il dito dal pulsante. Calcola la differenza di tempo tra questi due metodi. Inoltre puoi iniziare il timer in touchDown
e fermati/riavvialo in touchUp
.
//connect this action with Touch up inside
- (IBAction)touchUp:(id)sender {
NSLog(@"up");
}
//connect this to tocuh down
- (IBAction)touchDown:(id)sender{
NSLog(@"down");
}
AggiornatoNella codifica puoi scrivere in questo modo
[btn addTarget:self action:@selector(touchUp:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(touchDown:) forControlEvents:UIControlEventTouchDown];
e in xib
Altri suggerimenti
Lo stesso che ho fatto ... come hai detto su UilongPressureurerEcognizer, non riesco a capirlo ... ma puoi scrivere il tuo codice all'interno-(void)handleLongPress:(UILongPressGestureRecognizer *)gestureRecognizer
{
}
. Ho fatto lo stesso usando questo metodo e ho ottenuto un risultato di successo .. :). Non è nemmeno necessario aggiungere il timer, invece puoi usare ...
UILongPressGestureRecognizer *lpgr = [[UILongPressGestureRecognizer alloc]
initWithTarget:self action:@selector(handleLongPress:)];
lpgr.minimumPressDuration = 1.0;
lpgr.delegate = self;
Penso che funzioni perfettamente ..