Swift - UIControl addTarget 不工作

Swift - UIControl addTarget not working

我用 UIView 创建了 XIB。我已将 class MyViewControl: UIControl 分配给它,因此我可以在动作中添加修饰。它有效,在我的 class.

中调用了触摸

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

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),则会正确调用回调。

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

希望对您有所帮助