2017-07-25 1 views
0

I Longpress Geste hinzufügen versuchen in einer Zelle von UICollectionView beschriften, aber es funktioniert nicht. HierWie kann ich Longpress-Geste für ein Label in UICollectionViewCell in Swift hinzufügen

ist, was ich versuche:

private lazy var longpressGesture: UILongPressGestureRecognizer = { 
     let gesture = UILongPressGestureRecognizer(target: self, action: #selector(longpressGestureRecognizer)) 
     return gesture 
    }() 


@objc private func longpressGestureRecognizer(gestureRecognizer: UIGestureRecognizer) { 
    print("here") 
} 

override func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { 
    if let cell = collectionView.cellForItem(at: indexPath) as? CustomCell { 
     cell.label.addGestureRecognizer(longpressGesture) 
    } 
} 

Und CustomCell:

class CalendarSlotCell: UICollectionViewCell { 
    let label: UILabel = { 
     let lb = UILabel() 
     lb.text = "Pressme" 
     return lb 
    }() 
} 

Nichts passiert, wenn ich das Etikett drücken.

Hinweis: Ich Longpress Geste für Zelle wie unten hinzufügen und es hat funktioniert, aber was ich will tun, Longpress Geste Label in Zelle nicht nur für Zelle hinzufügen.

hinzufügen Longpress Geste für die Zelle, in viewDidLoad Funktion:

override func viewDidLoad() { 
     super.viewDidLoad() 
     collectionView?.addGestureRecognizer(panGesture) 
} 

bearbeiten

Es mag this post nicht, weil, wenn ich UILabel ersetzen mit UIImageView oder irgendetwas anderes es nicht funktioniert auch.

Darüber hinaus, wenn mein Problem UILabel mit Tap Gestenerkenner nicht funktioniert ist, kann ich es wie folgt beheben:

var tap = UITapGestureRecognizer(target: self, action: #selector(handleTap)) 

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
     let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cellid", for: indexPath) as! CustomCell 
     cell.label.addGestureRecognizer(tap) 
     return cell 
    } 

Dank für die Hilfe!

+0

Mögliche Duplikat [UILabel mit Tap Gestenerkenner nicht funktioniert] (https://stackoverflow.com/questions/39163577/uilabel-with-tap -gesture-recognizer-not-working) –

+0

Offensichtlich passiert nichts, wenn Sie das erste Mal klicken, weil Sie den Gestenerkenner in der Methode didSelect hinzufügen. Fügen Sie stattdessen eine Geste in der cellForRow-Methode hinzu –

Antwort

Verwandte Themen