2011-01-09 12 views
10

Me gustaría agregar un gesto a mi aplicación para que cuando el usuario deslice verticalmente active un método para hacer algo. El deslizamiento puede ser hacia arriba o hacia abajo. Nunca he hecho nada con los gestos, así que este es el primer uso de un gesto que no está incluido en un UITableView para eliminar filas.¿Cómo agregar un gesto de deslizamiento vertical a la aplicación iPhone para todas las pantallas?

El otro problema es que la mayoría de las pantallas son UITableViews por lo que el usuario podría simplemente desplazarse por UITableView. Así que me pregunto si podría usar un deslizamiento de dos dedos (vertical) para detectar el gesto para ejecutar el código frente a un simple deslizamiento de dedo para desplazar el UITableView?

Gracias de antemano.

Neal

Respuesta

20

Esto va en ApplicationDidLaunch:

UISwipeGestureRecognizer *swipeGesture = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(swipedScreen:)] autorelease]; 
swipeGesture.numberOfTouchesRequired = 2; 
    swipeGesture.direction = (UISwipeGestureRecognizerDirectionUp|UISwipeGestureRecognizerDirectionDown); 

[window addGestureRecognizer:swipeGesture]; 

luego implementar

- (void) swipedScreen:(UISwipeGestureRecognizer*)swipeGesture { 
    // do stuff 
} 

utilizar la documentación a UIGestureRecognizer y UISwipeGestureRecognizer.

Además, si desea detectar la dirección del deslizamiento tendrá que configurar dos reconocedores de gestos por separado. No se puede obtener la dirección de un deslizamiento desde un reconocedor de gestos de deslizamiento, solo se reconocen las direcciones en las que está registrado.

+0

encuentra un problema - cuando puedo girar mi dispositivo del golpe gesto "vertical" no tiene en cuenta la orientación. Por lo tanto, si crea un deslizamiento vertical (dirección hacia arriba/abajo) y gira el dispositivo hacia el paisaje, debe deslizarlo horizontalmente ahora. Alguna sugerencia para resolver esto? – Neal

+0

Asegúrese de quitar el reconocedor de gestos y de leerlos después de la rotación. Puede usar el método de instancia de UIView 'gestureRecognizers' para recorrerlos y eliminarlos. es decir 'para (reconocedor UIGestureRecognizer * en self.view)' – mackross

+0

@mackross quiero cambiar la vista múltiple hacia arriba y hacia abajo, así que ¿cómo puedo implementar decirme por favor ... ??? – Raju

0

en Swift 4.0, que va en el didFinishLaunchingWithOptions de método de la AppDelegate:

let swipeGesture = UISwipeGestureRecognizer(target: self, action: #selector(self.swipedScreen(swipeGesture:))) 
swipeGesture.numberOfTouchesRequired = 2 
swipeGesture.direction = [UISwipeGestureRecognizerDirection.up, UISwipeGestureRecognizerDirection.down] 
window?.addGestureRecognizer(swipeGesture) 

Y la acción:

@objc func swipedScreen(swipeGesture: UISwipeGestureRecognizer){ 
    Swift.print("hy") 
} 
Cuestiones relacionadas