Ios 如何在不将手指从屏幕上提起的情况下触发多个UIgestureRecognitor

Ios 如何在不将手指从屏幕上提起的情况下触发多个UIgestureRecognitor,ios,swift,swift3,Ios,Swift,Swift3,我在屏幕上有相邻的视图,每个视图都有一个不同的UIgestureRecognitor。我想要的是,如果我在一个视图中触碰并移动到相邻视图中,相邻视图的手势识别器将开始检测触碰 当前发生的情况是,如果我在一个视图中触地并移出该视图的框架,则初始视图的手势识别器将继续接收对touchChanged的调用,直到我的手指抬起为止。如果我将手势识别器的状态更改为.end、.failed、或.cancelled,则在我抬起手指之前,其他手势识别器都不会收到对其touch方法的调用 我如何确保在触摸处于其视图

我在屏幕上有相邻的视图,每个视图都有一个不同的
UIgestureRecognitor
。我想要的是,如果我在一个视图中触碰并移动到相邻视图中,相邻视图的手势识别器将开始检测触碰

当前发生的情况是,如果我在一个视图中触地并移出该视图的框架,则初始视图的手势识别器将继续接收对
touchChanged
的调用,直到我的手指抬起为止。如果我将手势识别器的
状态更改为
.end
.failed
、或
.cancelled
,则在我抬起手指之前,其他手势识别器都不会收到对其
touch
方法的调用

我如何确保在触摸处于其视图边界时触发手势识别器,并在触摸离开边界时结束,而不必处理superview中的触摸事件

下面是我实现的自定义
UIgestureRecognitor

class GestureRecognizer: UIGestureRecognizer, UIGestureRecognizerDelegate {
    override init(target: Any?, action: Selector?) {
        super.init(target: target, action: action)
        delegate = self
    }

    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
        super.touchesBegan(touches, with: event)
        state = .began
    }

    override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent) {
        super.touchesMoved(touches, with: event)
        if state == .began {state = .ended}
        else {state = .began}
    }

    func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        return otherGestureRecognizer is GestureRecognizer
    }
}
类GestureRecognizer:UIGestureRecognizer,UIGestureRecognizerDelegate{
重写初始化(目标:任意?,操作:选择器?){
super.init(目标:目标,操作:操作)
代表=自我
}
覆盖func touchesStart(touchs:Set,带有事件:UIEvent){
super.touchesbeated(touches,with:event)
状态=。开始
}
覆盖功能触摸移动(touchs:Set,带有事件:UIEvent){
super.touchesMoved(touches,with:event)
如果state=.start{state=.end}
else{state=.start}
}
func gestureRecognizer(uGestureRecognizer:UIGestureRecognizer,应与其他gestureRecognizer:UIGestureRecognizer同时识别)->Bool{
返回OtherGestureRecognitor为GestureRecognitor
}
}

您可以这样做,只需在控制器中编写此委托方法,然后返回true

读一次。

我相信我的委托方法封装了您的建议,它不起作用。如果您的手势对象不是手势识别器的类型,那么它将不起作用。请删除触摸方法并重试,它将对手势产生问题。我删除了所有的
touch
方法,现在动作永远不会触发这是所有相关的代码。除了
UIgestureRecognitor
子类之外,您还需要什么?