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
子类之外,您还需要什么?