首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >阻止UIScrollView的UIPanGestureRecognizer阻止UIScreenEdgePanGestureRecognizer

阻止UIScrollView的UIPanGestureRecognizer阻止UIScreenEdgePanGestureRecognizer
EN

Stack Overflow用户
提问于 2014-02-15 15:37:17
回答 2查看 10.7K关注 0票数 17

我有一个在我的应用程序的一个页面上充满屏幕的UIScrollView,但我想让用户从屏幕的边缘平移,以显示其背后的视图。问题是,UIScrollView偷走了我屏幕边缘的UIScreenEdgePanGestureRecognizer的触感。不幸的是,我不能从具有UIScrollView的视图控制器访问UIScreenEdgePanGestureRecognizer (反之亦然),因此我不能使用requireGestureRecognizerToFail:方法,因为我不能指定哪个手势识别器应该失败。具有滚动视图的视图控制器是容器视图控制器的子视图控制器,该容器视图控制器具有附加到容器视图控制器自己的视图之一的屏幕边缘平移手势识别器。

我也不能使用委托方法

代码语言:javascript
运行
复制
-(BOOL)gestureRecognizer:shouldRequireFailureOfGestureRecognizer:

因为UIScrollView不允许我将视图控制器设置为滚动视图的UIPanGestureRecognizer的委托。

如何防止scrollview从我自己的手势识别器中窃取平移的边缘?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-15 17:32:36

不幸的是,创建此行为可能是真正的P* i* t** A**。

幸运的是,即使您不能直接访问GestureRecognizer,也可以使用UIGestureRecognizer委托创建此行为。

代码语言:javascript
运行
复制
-(BOOL)gestureRecognizer:shouldRequireFailureOfGestureRecognizer:
-(BOOL)gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:
-(BOOL)gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer: 

在委托方法中传递的第二个参数('otherGestureRecognizer')保存UIScrollView的PanGestureRecognizer (或私有的Apple子类),当你的gestureRecognizer与滚动视图‘冲突’时。

因此,只需设置UIScreenEdgePanGestureRecognizer的委托来回复委托方法。

这两个方法的命名非常不理想,老实说,我真的不知道您的情况下正确的返回值是什么。

我昨天才遇到这个问题,我通过残酷的试验和错误解决了它。

以我为例,shouldRequireToFail和shouldBeRequiredToFail方法都返回NO,同时方法返回YES解决了我的问题。

代码语言:javascript
运行
复制
Note: Returning NO from both methods changed the behavior compared to not 
even implementing the methods at all. Even though the documentation says 
the default return value is NO.

但是,任何委托行为都可以通过使用GestureRecognizer方法来实现。但正如我上面所说的,方法的命名非常令人困惑。+几乎没有关于这些方法的有用文档。

票数 24
EN

Stack Overflow用户

发布于 2015-10-20 00:21:24

这可以在不必将屏幕平移手势的委托设置为视图控制器的情况下完成。

代码语言:javascript
运行
复制
[scrollView.panGestureRecognizer requireGestureRecognizerToFail:screenPanGesture];
票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21794778

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档