2016-08-11 4 views
2

Ich habe eine UICollectionView und möchte die Schwenkgeste zu ihren Zellen/Elementen hinzufügen. Wenn ich die Geste in gewohnter Weise hinzufüge, wird UICollectionView nicht gescrollt. DieseFügen Sie der UICollectionView-Zelle Schwenkgeste hinzu - IOS/Swift

ist, wie ich die Geste hinzufügen

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell { 

    let cell:UICollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("Cell", forIndexPath: indexPath) 

    let panGesture = UIPanGestureRecognizer(target: self, action: #selector(CaptureViewController.pagesCollectionViewItemPanEvent(_:))) 
    cell.addGestureRecognizer(panGesture) 

    return cell; 
} 

Gibt es falsch hier etwas? Kann mir bitte jemand sagen, wie ich meine Arbeit erledigen kann? Jede Hilfe würde sehr geschätzt werden.

+0

Überprüfung dieser Antwort, die ich es Ihnen helfen, hoffen :) [Swift Geste] (http://stackoverflow.com/a/18848817/6628878) –

+0

Versuchen Sie, Ihre Sammlung sehen Objekt erstreckt, von Dort implementieren Sie die Berührungen der Touch-Events-Methode. Behandeln Sie dann Ihr Pan-Ereignis und implementieren Sie dann die [super touchevents] -Methode, so dass der vorhandene Sammlungsansichts-Scroll keine Auswirkungen hat. – Bharath

Antwort

0

Nur ein Vorschlag, ich habe es nicht getestet:

eine eigene Zelle erstellen:

class PanCell: UICollectionViewCell { 
    override func awakeFromNib() { 
     let panGesture = UIPanGestureRecognizer(target: self, action: #selector(self.pagesCollectionViewItemPanEvent(_:))) 
     self.addGestureRecognizer(panGesture) 
    } 
} 

und Sie die Delegation CaptureViewController informieren können.

+0

Erstellen einer benutzerdefinierten Klasse für die Zelle löst mein Problem? Tut mir leid, ich verstehe das nicht. Können Sie bitte erklären :) – GMHSJ

+0

Erstellen Sie eine benutzerdefinierte Zelle können Sie die Geste in der Zelle verwalten, ich weiß nicht, ob Ihr Problem beheben wird, aber ich helfe Ihnen, die Klassenverhalten zu trennen, und es ist ein guter Ausgangspunkt zu lösen Ihr Problem. –

+0

Okay, ich habe es verstanden. Werde es versuchen. Danke bro – GMHSJ

1

Sie sollten die Geste der Sammlungsansicht und nicht der Zelle selbst hinzufügen. So etwas wie ...

let panGesture = UIPanGestureRecognizer(target: self, action: "handlePanGesture:") 
collectionView.addGestureRecognizer(panGesture) 

func handlePanGesture(gesture: UIPanGestureRecognizer) { 

    let locationInView = gesture.locationInView(collectionView) 
    ... 
} 
Verwandte Themen