UISplitViewController+UIPageViewController+WKWebView = 有时不能翻页

Posted

技术标签:

【中文标题】UISplitViewController+UIPageViewController+WKWebView = 有时不能翻页【英文标题】:UISplitViewController+UIPageViewController+WKWebView = can't turn pages sometimes 【发布时间】:2015-12-07 03:14:35 【问题描述】:

我有一个UISplitViewController,其详细信息是UIPageViewController。每个页面视图控制器只显示一个WKWebView

问题是在 iPhone 6(s) Plus 的横向模式下,我无法使用页面视图控制器在页面之间滚动 if 显示的 html 包含非常常见的 @ 987654324@。我仍然可以滚动、缩放和平移WKWebView,但UIPageViewController 根本不允许我翻页。

该问题不会出现在其他水平常规环境(iPad 处于任一方向)或任何紧凑型环境(iPhone 6 Plus 处于纵向模式或其他 iPhone)中。 UIPageViewController 使用“滚动”过渡样式还是页面卷曲都没有关系。

是我做错了什么,还是 Apple 的错误?如果是后者,有什么解决方法吗?

【问题讨论】:

【参考方案1】:

好的,我遇到了同样的问题。我有一个自定义的 SplitViewController,但行为相同(无法在 iPhone 6 Plus 上横向滑动到下一页)。问题是 splitview 必须使 webview 只是一个像素左右太小,以至于 webview 的手势识别器捕获了用于 UIPageView 的触摸事件。为什么?因为 webview 的内容必须向右“滚动”一个像素左右。稍微调整一下我的分流比就解决了。

尝试稍微调整preferredPrimaryColumnWidthFraction,我相信这会解决您的问题。

【讨论】:

我尝试调整preferredPrimaryColumnWidthFraction,但没有成功,primaryColumnWidth 是只读的。你使用了什么值,你在哪里设置它? @phu 我有一个自定义拆分视图控制器(不是 UISplitViewController 的子类)。您尝试了哪些 WidthFraction 值? 几个不同的值,大多数是明显的值,如 0.3、0.4、0.5。如果您没有使用 UISplitViewController 子类,是什么让您如此确定设置 preferredPrimaryColumnWidthFraction 会解决问题? @phu 很好的问题。好吧,在我的情况下,它与包含 webview 的视图控制器的大小有关(如我的回答中所述)。所以调整宽度约束对我有用。在 UISplitViewController 上,您似乎可以通过更改 PreferredPrimaryColumnWidthFraction 来实现相同的效果。你能从右向左滑动吗?【参考方案2】:

UISplitViewController 向 WKWebView 控件报告宽度不正确,可能与拆分器分隔线有关。这会导致 WKWebView 水平滚动,与 UIPageViewController 冲突。使用此代码解决此问题:

webView.scrollView.contentInset = UIEdgeInsetsMake(0, -1, 0, 0) 

【讨论】:

以上是关于UISplitViewController+UIPageViewController+WKWebView = 有时不能翻页的主要内容,如果未能解决你的问题,请参考以下文章

uip UDP server广播模式(client能够随意port,而且主动向client发送数据)

ALIENTEK 战舰ENC28J60 LWIP和UIP补充例程(LWIP WEB有惊喜)

UISplitViewController - 双列样式不起作用

UISplitViewController 一致分隔符

UISplitViewController - 并排或纵向叠加

在 UIViewControllers 和 UISplitViewController 之间导航 [关闭]