如何让两个UIGestures同时响应两个不同的视图?

时间:2018-03-21 19:32:43

标签: ios swift uiview uigesturerecognizer

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

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

我希望能够在显示时回复{C}的UIPanGestureRecognizer,当我发布触摸时,我希望结束两个手势UILongPressGestureRecognizer的视图B和{{1}视图C。

有可能吗?

1 个答案:

答案 0 :(得分:1)

我认为没有必要将UIPanGestureRecognizer添加到View(C),你可以在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
    }
}

代码执行您的要求。