【问题标题】:swipe up/down gesture not working inside UIWebView在 UIWebView 中向上/向下滑动手势不起作用
【发布时间】:2017-05-11 19:18:08
【问题描述】:

我在 UIViewController 中托管了一个 UIWebView, 我设法通过以下方式添加右/左手势:

var swipeRight = UISwipeGestureRecognizer(target: self, action: "swiped:")
swipeRight.direction = UISwipeGestureRecognizerDirection.Right
self.webView.addGestureRecognizer(swipeRight)

它不适用于上/下方向的问题:

var swipeDown = UISwipeGestureRecognizer(target: self, action: "swiped:")
swipeDown.direction = UISwipeGestureRecognizerDirection.Down
self.webView.addGestureRecognizer(swipeDown)

我认为这是因为滚动,我也尝试将其添加到滚动视图中,但它仍然无法识别上/下手势:

self.webView.scrollView.addGestureRecognizer(swipeDown)

更新
我尝试了 Harry 的回答,但它覆盖了向上/向下滑动的默认操作,我无法滚动页面:

self.view.addGestureRecognizer(swipeUp)
self.view.addGestureRecognizer(swipeDown)

self.webView.scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeUp)
self.webView.scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeDown)

【问题讨论】:

标签: ios swift


【解决方案1】:

将手势识别器添加到 self.view 而不是 UIWebView 实例。

self.view.addGestureRecognizer(swipeUp)
self.view.addGestureRecognizer(swipeDown)

在将向上/向下手势识别器添加到 Web 视图后添加这两行。

self.webView.scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeUp)
self.webView.scrollView.panGestureRecognizer.requireGestureRecognizerToFail(swipeDown)

【讨论】:

  • 谢谢,现在它可以工作了,但是它覆盖了向上/向下滑动的默认操作,我无法滚动页面
  • 对不起,我仍然无法滚动,我得到了我定义的手势,但无法向上/向下滚动 UIWEBVIEW,我做错了什么?我编辑了我的问题
【解决方案2】:

如果有人还在研究它,这解决了我的问题:

webView.scrollView.panGestureRecognizer.cancelsTouchesInView = NO;

upGesture.direction = UISwipeGestureRecognizerDirectionUp;
upGesture.cancelsTouchesInView = NO;
upGesture.delegate = self;
[webView.scrollView addGestureRecognizer:upGesture];

downGesture.direction = UISwipeGestureRecognizerDirectionDown;
downGesture.cancelsTouchesInView = NO;
downGesture.delegate = self;
[webView.scrollView addGestureRecognizer:downGesture];



- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer {
    return [gestureRecognizer isKindOfClass:[UISwipeGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]];
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多