2016-05-12 4 views
0

i eine UIcollectionView mit vertikalen Scroll haben, jede Reihe enthält eine UIView, in einem uiview i eine pan Geste auf diese Weise angebracht sind:Horizontal pan Geste innerhalb UIScrollView

let swipe = UIPanGestureRecognizer(target: self, action: "swipe:") 
cell.addGestureRecognizer(swipe) 

Dies ist die Methode:

func swipe(sender: UIPanGestureRecognizer) { 
     let point = sender.velocityInView(sender.view!) 
     switch sender.state { 
     case .Ended: 
      if point.x < 0 { 
       selectedMessageForDetails = sender.message! 
       self.performSegueWithIdentifier("newView", sender: nil) 
      } 
     default:break 
     } 
} 

Alles funktioniert gut, aber auf diese Weise, wenn ich horizontal in Zelle wischen, wird Swipe-Methode aufgerufen, aber wenn ich vertikal wische, funktioniert die Bildlaufansicht nicht, wie kann ich das lösen?

Ich hätte gerne den gleichen Aspekt der WhatsApp-Nachricht, wenn ich rechts nach links in einer Blase wische, kann ich eine Nachricht Details öffnen, aber wenn ich vertikal wische, kann ich die Bildlaufansicht scrollen!

Irgendwelche Ideen?

+0

Sie Swipe kann hinzufügen können keine Notwendigkeit, self.view für jede Ansicht hinzuzufügen –

+0

Und wie kann ich die aktuelle Zelle identifizieren? –

Antwort

0

Sie können Gesture Selbst geben .view nicht auf einzelne Zelle

let swipe = UIPanGestureRecognizer(target: self, action: "swipe:") 
    self.view.addGestureRecognizer(swipe) 

die aktuelle Zelle zu identifizieren, die Sie in Aktion Methode

let point = swipe .locationInView(self.view) 

let indexPath = collectionview.indexPathForItemAtPoint(point)