【发布时间】:2016-10-15 19:48:41
【问题描述】:
在我的集合视图的每个单元格中都有一个圆形 UIView。这是通过创建UIView 的自定义子类(我称之为CircleView)并在子类'awakeFromNib() 中设置layer.cornerRadius = self.frame.size.width/2 来实现的
我想为每个 CircleView 添加一个手势识别器。我在集合视图的cellForItemAtIndexPath 中完成了此操作:
let gestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(tap(_:)))
cell.circleView.addGestureRecognizer(gestureRecognizer)
问题在于,只要在原始方形 UIView 的边界内的任何地方发生点击,就会调用手势识别器。我只想识别圈内发生的点击。
我已尝试通过以下方式解决此问题:
在CircleView的awakeFromNib()我设置了self.clipsToBounds = true(没有效果)
也在CircleView的awakeFromNib()我设置了layer.masksToBounds = true(没有效果)
提前感谢您的想法和建议。
【问题讨论】:
-
您是否使用建议的解决方案解决了您的问题?
-
在
cellForItemAtIndexPath中添加UITapGestureRecognizer的新实例并不是最好的主意。当您滚动此集合视图时,这将一遍又一遍地添加重复的识别器,因为单元格被重复使用。
标签: ios swift uitapgesturerecognizer