2017-06-14 2 views
0

Ich habe XIB mit UIView erstellt. Ich habe ihm die Klasse MyViewControl: UIControl zugewiesen, so dass ich die Nachbesserung innerhalb der Aktion hinzufügen kann. Es funktioniert, Berührungen werden in meiner Klasse genannt.Swift - UIControl addTarget funktioniert nicht

Jetzt habe ich UICollectionView erstellt und diese "Xib" als Zellansicht hinzufügen. Ich möchte jetzt Berührungen innerhalb der Klasse UICollectionViewDelegate behandelt werden. So habe ich das getan:

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {   
    for v in cell.contentView.subviews {    
     if let c: MyViewControl = v as? MyViewControl {    
      c.isUserInteractionEnabled = true 
      c.addTarget(self, action: #selector(myClick), for: UIControlEvents.touchUpInside) 
     } 
    }   
} 

func myClick(sender: Any){ 
    print("click....") 
} 

jedoch myClick Wähler nie aufgerufen. Wenn ich UIButton zum MyViewControl hinzufüge und das gleiche mache (addTarget) für diese Schaltfläche, werden Callbacks korrekt aufgerufen.

+0

nur die Methode als 'func myClick implementieren() { print ("klicken ....") }' –

Antwort

1

Add unterstreichen _ vor Absender in der Funktion als und fügen (_:) im #selector unter action viz. myClick(_ :)

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {   
    for v in cell.contentView.subviews {    
     if let c: MyViewControl = v as? MyViewControl {    
      c.isUserInteractionEnabled = true 
      c.addTarget(self, action: #selector(myClick(_:)), for: UIControlEvents.touchUpInside) 
     } 
    }   
} 

func myClick(_ sender: Any){ 
    print("click....") 
} 

hoffe, das hilft