¿Cómo detectamos un tap & espera en un UITableViewCell
?Detección de Tap & Hold en celdas UITableView
Respuesta
En iOS 3.2 o posterior puede utilizar UILongPressGestureRecognizer
Probablemente debería manejar la UIControlTouchDown caso y en función de lo que entendemos por "mantener", disparar un NSTimer que contará un intervalo desde que inició el contacto e invalidar el momento del disparo o liberar al tacto (UIControlTouchUpInside y UIControlTouchUpOutside eventos). Cuando el temporizador se dispara, tiene su "toque & espera" detectado.
Aquí está el código levantado directamente de mi aplicación. Debe agregar estos métodos (y un miembro _cancelTouches booleano) a una clase derivada de UITableViewCell.
-(void) tapNHoldFired {
self->_cancelTouches = YES;
// DO WHATEVER YOU LIKE HERE!!!
}
-(void) cancelTapNHold {
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(tapNHoldFired) object:nil];
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
self->_cancelTouches = NO;
[super touchesBegan:touches withEvent:event];
[self performSelector:@selector(tapNHoldFired) withObject:nil afterDelay:.7];
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event {
[self cancelTapNHold];
if (self->_cancelTouches)
return;
[super touchesEnded:touches withEvent:event];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
[self cancelTapNHold];
[super touchesMoved:touches withEvent:event];
}
- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event {
[self cancelTapNHold];
[super touchesCancelled:touches withEvent:event];
}
Nunca debe usar un código como este self -> _ cancelTouches = YES; En lugar de solo usar self.cancelTouches = YES; y declarar propiedad privada – Igor
¿Qué es esta sintaxis "-> _"? nunca lo había visto antes :) –
//Add gesture to a method where the view is being created. In this example long tap is added to tile (a subclass of UIView):
// Add long tap for the main tiles
UILongPressGestureRecognizer *longPressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(longTap:)];
[tile addGestureRecognizer:longPressGesture];
[longPressGesture release];
-(void) longTap:(UILongPressGestureRecognizer *)gestureRecognizer{
NSLog(@"gestureRecognizer= %@",gestureRecognizer);
if ([gestureRecognizer state] == UIGestureRecognizerStateBegan) {
NSLog(@"longTap began");
}
}
- 1. Precargar celdas de uitableview
- 2. Ocultar celdas vacías en UITableView
- 3. UITableView celdas de carga inversa
- 4. Configuración de celdas estáticas en uitableview programáticamente
- 5. Espacio entre las celdas de UITableView
- 6. UITableView con celdas estáticas no aparece
- 7. Agregar celdas mediante programación a UITableView
- 8. UIButton Touch and Hold
- 9. Uso de tipos de estilos de celdas múltiples y celdas personalizadas en una UITableView
- 10. No se pueden definir las celdas de prototipo en UITableView
- 11. Cargue todas las celdas en UITableView antes de desplazarse
- 12. Creación de celdas personalizadas en la fila estática UITableView
- 13. UITextFields en UITableView, los valores ingresados reaparecen en otras celdas
- 14. ¿Cómo usar celdas estáticas en UITableView sin utilizar Storyboards?
- 15. Espaciado entre celdas en UITableView con UITableViewCell personalizado
- 16. Cómo limitar el número de celdas que muestra UITableview?
- 17. Las celdas de UITableView se lanzan cuando no están visibles
- 18. Forzar UITableView para llamar a cellForRowAtIndexPath: para todas las celdas
- 19. Cómo eliminar la separación entre las celdas UITableView
- 20. Mostrar datepicker en textfield tap
- 21. Ruby's tap idiom en Python
- 22. iPhone: Detectando Tap en MKMapView
- 23. Problema al personalizar el estilo de selección de celdas en UITableView en iPhone
- 24. GestureOverlayView y Double-Tap
- 25. ¿Cómo puedo modificar la apariencia de las celdas 'vacías' en la versión sencilla de UITableView?
- 26. Reconocimiento de Tap para UIImageView en UITableViewCell
- 27. Ventana de tap personalizada en Google Map
- 28. ¿Cómo puedo aumentar programáticamente la altura de las celdas en mi UITableView?
- 29. ¿Cómo desactivar el modo de edición en UITableView cuando no hay más celdas para eliminar?
- 30. ¿Hay una manera fácil de observar las celdas visibles en una UITableView?
estoy lata de no lo suficientemente experto para venir de esta respuesta al código real ... Pero quiero decir con sostenga el mismo comportamiento en Mobile Safari al tocar y mantener una URL para que aparezca una hoja de acción para mostrar las opciones con respecto a esta URL – JFMartin