Swift - UIControl addTarget 不起作用

Posted

技术标签:

【中文标题】Swift - UIControl addTarget 不起作用【英文标题】:Swift - UIControl addTarget not working 【发布时间】:2017-06-14 10:15:52 【问题描述】:

我用UIView 创建了XIB。我已经为它分配了MyViewControl: UIControl 类,所以我可以在里面添加修饰。它有效,在我的课堂上调用了触摸。

现在,我创建了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),则会正确调用回调。

【问题讨论】:

只需将方法实现为func myClick() print("click....") 【参考方案1】:

在发送者之前添加下划线_作为_ sender: Any,并在#selector下的#selector中添加(_:)action即。 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....")

希望对你有帮助

【讨论】:

以上是关于Swift - UIControl addTarget 不起作用的主要内容,如果未能解决你的问题,请参考以下文章