2017-06-14 200 views
0

我用UIView创建了XIB。我已将类MyViewControl: UIControl分配给它,所以我可以添加触摸内部动作。它的工作原理,在我的课堂里被称为触动。Swift - UIControl addTarget无法正常工作

现在,我创建了UICollectionView并将此“xib”添加为单元格视图。我现在想触摸UICollectionViewDelegate课内处理。所以我这样做了:

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....") 
} 

但是,myClick选择器从不被调用。如果我将UIButton添加到MyViewControl并对此按钮执行相同操作(addTarget),则会正确调用回调。

+0

只需实现方法'FUNC MyClick认证(){ 打印( “点击......”) }' –

回答

1

加入功能发件人为之前强调_,并在#selectoraction即添加(_:)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....") 
} 

希望这有助于