单击手势不适用于以编程方式添加的子视图
Posted
技术标签:
【中文标题】单击手势不适用于以编程方式添加的子视图【英文标题】:Single Tap Gesture not working on sub view that was added programatically 【发布时间】:2016-06-27 08:03:29 【问题描述】:背景: 我曾经在视图上有一个触摸手势检测器,它工作得很好。 然后我的应用增长了,现在我需要将相同的手势检测器添加到 3 个视图中。
问题: 当我将手势检测器添加到已使用“.addSubview”附加到父视图的视图时,它永远不会被调用
代码:
parentView.addSubview(waveview)
parentView.addSubview(waveviewCap)
parentView.addSubview(waveviewCapBG)
let singleFingerDTap:UITapGestureRecognizer=UITapGestureRecognizer.init(target: self, action: "handleWaveviewTap")
singleFingerDTap.numberOfTapsRequired = 1;
self.waveview!.addGestureRecognizer(singleFingerDTap)
self.waveviewCap!.addGestureRecognizer(singleFingerDTap)
self.waveviewCapBG!.addGestureRecognizer(singleFingerDTap)
【问题讨论】:
你试过userInteractionEnabled
吗?
我相信你不应该在不同的视图中添加相同的手势对象。尝试使用相同的选择器使用不同的手势
【参考方案1】:
请在您的父视图中添加 UIGestureRecognizerDelegate。并更新“shouldReceiveTouch”委托方法。
func gestureRecognizer(gestureRecognizer: UIGestureRecognizer, shouldReceiveTouch touch: UITouch) -> Bool
if touch.view == waveview || touch.view == waveviewCap || touch.view == waveviewCapBG
return true
return false
希望它的工作......
【讨论】:
以上是关于单击手势不适用于以编程方式添加的子视图的主要内容,如果未能解决你的问题,请参考以下文章