如何替换 UIWebView 中的 SwipeGestureRecognizer 操作

Posted

技术标签:

【中文标题】如何替换 UIWebView 中的 SwipeGestureRecognizer 操作【英文标题】:How to replace SwipeGestureRecognizer action in a UIWebView 【发布时间】:2012-05-16 11:55:06 【问题描述】:

我正在尝试在一组 5 个 UIWebView 中呈现本地 html5 内容。 这个想法是用户会滑动到 4 个方向,所以我得到了 5 个 UIWebViews 并禁用了弹跳:

leftWebView.scrollView.bounces = NO;
middleWebView.scrollView.bounces = NO;
rightWebView.scrollView.bounces = NO;
upWebView.scrollView.bounces = NO;
downWebView.scrollView.bounces = NO;

我们假设 webviews 中不可能滚动,因为显示的 html 页面比 iPad 屏幕小。

加载这些 web 视图后,只需移动其中心即可平滑过渡。

那么有没有办法改变 UIWebView 中手势识别器执行的滑动操作?

我尝试将 4 个 SwipeGesturesRecognizers(每个方向一个)直接放在 webViews 上,但由于某种原因,当我交换引用时,手势识别器失去了对 WebViews 的跟踪:

UIWebView *tmp = leftWebView;
leftWebView = middleWebView;
middleWebView = rightWebView;
rightWebView = tmp;

我尝试在窗口顶部的 UIView 上使用 4 个 SwipeGesturesRecognizers(每个方向一个),但现在点击被此视图阻止,因此用户无法再与可点击元素进行交互。

【问题讨论】:

【参考方案1】:

您可以将自定义 UISwipeGestureRecognizer 添加到您的 webView .. 并像这样禁用 webView 中的滚动

UIScrollView *scroll = [[self.webView subviews] lastObject];

if([scroll isKindOfClass:[UIScrollView class]])

    scroll = (UIScrollView*)scroll;
    [scroll setScrollEnabled:NO];

【讨论】:

谢谢,这正是我需要添加以启用我自己的滑动手势识别器

以上是关于如何替换 UIWebView 中的 SwipeGestureRecognizer 操作的主要内容,如果未能解决你的问题,请参考以下文章

使用WKWebView替换UIWebView

swift - UIWebView 和 WKWebView(iOS12 之后替换UIWebView)

UIWebView 滚动替换

UIWebView 中的资产目录图像

使用WKWebView替换UIWebView

如何在 Firebase/Auth 上避免 UIWebView