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....")
}
希望对您有所帮助
我用 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....")
}
希望对您有所帮助