在UIWebView中滑动手势识别

MrH*_*hma 6 iphone uiwebview uiswipegesturerecognizer

我已经阅读了很多关于这方面的问题但是它们似乎都没有实现我想要的......所以我可以说我有一个任意的UIWebView内部UIViewController.该UIViewController有一个SwipeGestureRecognizer工作正常.它甚至可以在UIWebView- 没有滚动条的情况下工作.(在我加载页面之前,或者即使我加载的页面可以适合我的大小UIWebView).但是,如果我加载需要向左或向右水平滚动的网页,那么在UIWebView我的视图部分内部,我无法识别任何滑动手势.每次单击/拖动/滑动都会触发滚动操作.有没有办法区分"滑动"和只是用手指滚动(不是提起它而是拖动滚动).

Joh*_*rug 24

是的,你可以告诉UIWebView的UIScrollView它的UIPanGestureRecognizer应该只在你自己的UISwipeGestureRecognizer失败时触发.

这是你如何做到的:

UISwipeGestureRecognizer *rightSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
UISwipeGestureRecognizer *leftSwipeGesture = [[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(handleSwipeGesture:)];
rightSwipeGesture.direction = UISwipeGestureRecognizerDirectionRight;
leftSwipeGesture.direction = UISwipeGestureRecognizerDirectionLeft;
[self.view addGestureRecognizer:rightSwipeGesture];
[self.view addGestureRecognizer:leftSwipeGesture];

[_webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:rightSwipeGesture];
[_webView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:leftSwipeGesture];
Run Code Online (Sandbox Code Playgroud)

这应该为你做的伎俩.


Jon*_*ing 2

您必须继承 UIWebView 并覆盖手势识别器调用。

编辑-看看这篇文章处理UIWebview内部的触摸和这个链接http://mithin.in/2009/08/26/detecting-taps-and-events-on-uiwebview-the-right-way/

  • 您能描述一下该怎么做吗?在文档中它说“UIWebView 类不应被子类化”。http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWebView_Class/Reference/Reference.html (2认同)