【问题标题】:How to make two UIGestures respond simultaneously on two different views? [closed]如何让两个 UIGestures 同时响应两个不同的视图? [关闭]
【发布时间】:2018-08-31 02:10:54
【问题描述】:

我的视图 (A) 有两个子视图:视图 B 和视图 C。视图 (B) 有一个 UILongPressGestureRecognizer,视图 (C) 有一个 UIPanGestureRecognizer,默认情况下是隐藏的。当我长按视图 B 时,会显示视图 C (isHidden = false)。

现在,当我长按视图 B 时,会显示视图 C,但其中定义的手势没有响应,视图 B 中定义的手势仍处于活动状态。

我希望能够在视图 C 显示时对 UIPanGestureRecognizer 做出响应,并且当我释放触摸时,我想结束这两个手势:视图 B 的 UILongPressGestureRecognizer 和视图 C 的 UIPanGestureRecognizer

有可能吗?

【问题讨论】:

  • 视图 C 是否在视图 B 上方?你能提供视图的布局吗?
  • 是的,C 高于 B。
  • 你能看到我嵌入的代码吗?

标签: ios swift uiview uigesturerecognizer


【解决方案1】:

我认为不需要在View(C)中添加UIPanGestureRecognizer,可以在UILongPressGestureRecognizer句柄方法中识别手指位置。看示例代码

声明变量:

@IBOutlet var cView: UIView?

这里是UILongPressGestureRecognizer句柄方法:

 @IBAction func handleLongPressGesture(_ gesture: UILongPressGestureRecognizer) {
    switch gesture.state {
    case .began:
        cView?.isHidden = false
    case .changed:
        if let cView = cView, cView.isHidden == false {
            let location = gesture.location(in: self.cView)
            print("Finger Location - (\(location.x),\(location.y))")
        }
    case .ended, .cancelled:
        cView?.isHidden = true
    default: break
    }
}

代码执行您的要求。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2014-12-05
    • 1970-01-01
    • 2017-02-25
    • 1970-01-01
    相关资源
    最近更新 更多