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 有啥区别
UI Gesture 没有触发 + 从不是父视图的父视图中删除子视图
Appium-python-UI自动化之页面-上下滑动左右滑动swipe方法操作