2017-06-14 92 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....") 
} 

希望這有助於