Reconocer dos dedos deslizar hacia abajo gesto en UITableView

Quiero agregar dos dedos deslizar hacia arriba y hacia abajo los gestos en UITableView. La idea es desplazarse por las celdas con un gesto con la punta de un dedo y hacer alguna otra acción utilizando dos dedos para deslizar hacia arriba / hacia abajo los gestos. Me gustaría lograr una experiencia similar a la del modo nocturno de Tweetbot: https://vine.co/v/hF5J1Y7hubT

Este es mi código:

func setupGestureRecognizer() { swipeUp = UISwipeGestureRecognizer(target: self, action: "handleSwipe") swipeDown = UISwipeGestureRecognizer(target: self, action: "handleSwipe") swipeUp.direction = UISwipeGestureRecognizerDirection.Up swipeDown.direction = UISwipeGestureRecognizerDirection.Down swipeUp.numberOfTouchesRequinetworking = 2 swipeDown.numberOfTouchesRequinetworking = 2 self.tableView.panGestureRecognizer.maximumNumberOfTouches = 1 self.tableView.panGestureRecognizer.requireGestureRecognizerToFail(swipeUp) self.tableView.panGestureRecognizer.requireGestureRecognizerToFail(swipeDown) self.tableView.addGestureRecognizer(swipeUp) self.tableView.addGestureRecognizer(swipeDown) } func handleSwipe() { print("Swiped!") let alert = UIAlertController(title: "Gesture recognizer", message: "Swipe detected", prefernetworkingStyle: UIAlertControllerStyle.Alert) let action = UIAlertAction(title: "OK", style: UIAlertActionStyle.Default, handler: nil) alert.addAction(action) self.presentViewController(alert, animated: true, completion: nil) } 

setupGestureRecognizer() se llama en viewDidLoad()

Recibo mi alerta cuando deslizo hacia arriba o abajo con dos dedos, pero cuando uso el gesto de paneo, hay un retraso significativo antes de que la table se mueva. Probablemente sea el gesto de paneo de time que debe esperar para asegurarse de que el gesto de panga falle:

De hecho, me parece más lógico establecer requireGestureRecognizerToFail en esto: swipeDown.requireGestureRecognizerToFail(self.tableView.panGestureRecognizer) pero cuando lo intenté, el gesto de deslizar no funcionó en absoluto. Creo que hay un problema con panGestureRecognizer fallando. ¿Por qué no falla cuando uso dos dedos si declaro explícitamente que debe aceptar maximumNumberOfTouches = 1 ?

¿Sabes cómo hacer que estos gestos interactúen entre sí?

Eliminar estas líneas

 self.tableView.panGestureRecognizer.requireGestureRecognizerToFail(swipeUp) self.tableView.panGestureRecognizer.requireGestureRecognizerToFail(swipeDown) 

Establezca el delegado gesto para swipeUp y swipeDown

 swipeDown.delegate = self swipeUp.delegate = self 

Y maneje el gesto delegado para el fracaso dinámicamente.

 func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWithGestureRecognizer otherGestureRecognizer: UIGestureRecognizer) -> Bool { return true } 

Devuelve verdadero siempre. Esto se encargará de si se manipula o se desliza.