ios – UIPanGestureRecognizer与UIPinchGestureRecognizer的超级视图冲突

ios – UIPanGestureRecognizer与UIPinchGestureRecognizer的超级视图冲突,第1张

概述我有一个带有子视图的UIScrollView实例,该子视图有自己的UIPanGestureRecognizer,用于在scrollview中移动子视图.我希望scrollview的pinch-to-zoom功能优先于平移手势.然而,事实并非如此:当我用一根手指捏住我的子视图时,它会反过来平移. 到目前为止我尝试了什么: > gestureRecognizer:shouldRecognizeSimu 我有一个带有子视图的UIScrollVIEw实例,该子视图有自己的UIPanGestureRecognizer,用于在scrollvIEw中移动子视图.我希望scrollvIEw的pinch-to-zoom功能优先于平移手势.然而,事实并非如此:当我用一根手指捏住我的子视图时,它会反过来平移.

到目前为止我尝试了什么:

> gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer ::它将平移和捏
> [panGestureRecognizer requireGestureRecognizerToFail:scrollVIEw.pinchGestureRecognizer];:平移将不再起作用(仅针对UIGestureRecognizerStateEnded状态触发回调).而panGestureRecognizer.cancelstouchesInVIEw = NO也无济于事.

我的理解是,当开始从子视图中捏合时,滚动视图和子视图都只接受一次触摸,这就是为什么在第二种情况下捏合手势识别器甚至不会失败,因为它甚至没有开始处理事件.

那么,关于如何实现这一点的任何想法?

解决方法 一种方法是允许与scrollVIEw.pinchGestureRecognizer同时进行交互,然后在scrollVIEw.pinchGestureRecognizer实际缩放时取消panGestureRecognizer.我知道如何取消它们的唯一方法是禁用/启用.

-(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;}
总结

以上是内存溢出为你收集整理的ios – UIPanGestureRecognizer与UIPinchGestureRecognizer的超级视图冲突全部内容,希望文章能够帮你解决ios – UIPanGestureRecognizer与UIPinchGestureRecognizer的超级视图冲突所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1045212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-24
下一篇 2022-05-24

发表评论

登录后才能评论

评论列表(0条)

保存