【问题标题】: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 吗?
  • 我相信你不应该在不同的视图中添加相同的手势对象。尝试使用相同的选择器使用不同的手势

标签: ios swift uiview uigesturerecognizer addsubview


【解决方案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
}

希望它的工作......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-10
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多