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 不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Swift - UIControl addTarget 不起作用