Ios UIPanGestureRecognizer与UIPinchEstureRecognizer冲突';s超视图
我有一个UIScrollView实例,其子视图有自己的UIPangestureRecognitor,用于在scrollview中移动子视图。我希望scrollview的收缩到缩放功能比平移手势具有最高优先级。然而,情况并非如此:当开始用一根手指在我的子视图上挤压时,它将平移 到目前为止,我尝试的是:Ios UIPanGestureRecognizer与UIPinchEstureRecognizer冲突';s超视图,ios,uiscrollview,uigesturerecognizer,Ios,Uiscrollview,Uigesturerecognizer,我有一个UIScrollView实例,其子视图有自己的UIPangestureRecognitor,用于在scrollview中移动子视图。我希望scrollview的收缩到缩放功能比平移手势具有最高优先级。然而,情况并非如此:当开始用一根手指在我的子视图上挤压时,它将平移 到目前为止,我尝试的是: 手势识别器:应与手势识别器同时识别::它将平移和挤压 [PangestureRecognitizer RequiremgestureRecognitizerToFail:scrollView.Pi
:它将平移和挤压手势识别器:应与手势识别器同时识别:
[PangestureRecognitizer RequiremgestureRecognitizerToFail:scrollView.PinchgestureRecognitizer]代码>:平移不再有效(回调仅在
状态下触发)。而UIgestureRecognitizerStateEnded
也无济于事pangestureerecognizer.cancelsTouchesInView=NO
那么,关于如何实现这一点有什么想法吗?一种方法是允许与scrollView.PinchGestureRecognitor同时交互,然后如果scrollView.PinchGestureRecognitor实际正在缩放,则取消PangestureRecognitor。我知道如何取消它们的唯一方法是禁用/启用
-(BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer{
if (gestureRecognizer == panGestureRecognizer){
if (otherGestureRecognizer == scrollView.panGestureRecognizer) {
return 0;
}
else if(otherGestureRecognizer == scrollView.pinchGestureRecognizer){
if (scrollView.pinchGestureRecognizer.scale != 1) {
gestureRecognizer.enabled = 0;
gestureRecognizer.enabled = 1;
}
}
}
return 1;
}
谢谢事实上,如果比例不同于1,则在禁用/启用技巧后返回“是”,否则返回“否”就足够了。是与1相同。否与0相同。我知道,但在您的实现中,大多数情况下都返回“是”。我更喜欢只在需要时才返回YES,因为它离默认实现更近,默认实现返回NO。非常好的解决方案。非常感谢。