UIPan Gesture 和 UI Swipe Gesture 在同一个视图中

Posted

技术标签:

【中文标题】UIPan Gesture 和 UI Swipe Gesture 在同一个视图中【英文标题】:UIPanGesture and UISwipeGesture in the same view 【发布时间】:2014-05-25 19:07:14 【问题描述】:

我有一个UIView,它已经实现了一个UIPanGesture,当用户将UIView 拖到一半时会起作用,从而导致一些动作。到目前为止,它工作得很好。现在,在同一个UIView 中,我想实现一个UISwipeGesture,所以当用户向上滑动时,会调用其他一些方法。我一直在阅读有关UIGestureRecognizerDelegate 方法的信息,我想我需要使用gestureRecognizer:shouldRequireFailureOfGestureRecognizer:,但我不确定。

我在 viewDidLoad 中实现了以下内容并收到错误消息“无效参数。无法识别的选择器已发送到实例”

UIPanGestureRecognizer * panRec = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)];
panRec.delegate = self;
[panedView addGestureRecognizer:panRec];

UISwipeGestureRecognizer * swipeRec = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipe:)];
swipeRec.direction = UISwipeGestureRecognizerDirectionUp;
swipeRec.delegate=self;
[panedView addGestureRecognizer:swipeRec];

[self gestureRecognizer:swipeRec shouldRequireFailureOfGestureRecognizer: panRec]; 

【问题讨论】:

【参考方案1】:

gestureRecognizer:shouldRequireFailureOfGestureRecognizer: 是 UIGestureRecognizer 的委托。意思是,您将实现该方法,并且当一个手势发生时,该方法将被自动调用。要启用手势识别器调用此方法,您需要将手势识别器委托设置为 self,这可以在 viewDidLoad 中完成。

【讨论】:

我尝试实现你所说的,但无法让它发挥作用。我在上面添加了我遇到的错误代码。 你在 self 的对象上调用了 shouldRequireFailureOfGestureRecognizer 方法。实现意味着你在你的类中声明方法。只需复制此 - - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 并将此方法粘贴到您的课程中。您可以在大括号中写下您的登录信息。并删除该行[self gestureRecognizer:swipeRec shouldRequireFailureOfGestureRecognizer: panRec]; 你能澄清一下大括号里应该写什么吗?我将此复制到我的班级- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer 中,然后删除了[self gestureRecognizer:swipeRec shouldRequireFailureOfGestureRecognizer: panRec]; 嗯,所以您需要两个手势识别器同时工作,对吗?而不是使用上面的手势识别器委托,你可以实现这个 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer return YES; - 用这个替换以前的方法。

以上是关于UIPan Gesture 和 UI Swipe Gesture 在同一个视图中的主要内容,如果未能解决你的问题,请参考以下文章

UI Automator 和 driver.swipe via appium 有啥区别

在 vue 中使用 mint-ui swipe 的坑

UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图

Appium-python-UI自动化之页面-上下滑动左右滑动swipe方法操作

小型电商页面实践-Vant UI框架实践-(7)Tab 页面下嵌套Swipe 轮播广告

Angular 2 RC 2 使用移动手势(滑动、捏合、旋转)