gpt4 book ai didi

ios - 为什么不应该将 UIWebView 放在 UIScrollView 中?

转载 作者:技术小花猫 更新时间:2023-10-29 10:45:10 26 4
gpt4 key购买 nike

问题

有谁知道在 iOS 上避免在 ScrollView 中使用 Web View 的技术原因(假设您愿意在 Web View 本身中禁用滚动)?

如果你看at the Apple docs for UIWebView ,他们说:

Important: You should not embed UIWebView or UITableView objects in UIScrollView objects. If you do so, unexpected behavior can result because touch events for the two objects can be mixed up and wrongly handled.

我的猜测

看起来他们可能在警告您不要将 ScrollView 放在另一个 ScrollView 中,因为触摸可能会混淆内部和外部 ScrollView 。

但是,将 UIWebView 放在 ScrollView 中是有充分理由的。 Web View 不仅仅是 ScrollView 。 UIWebView 可以轻松显示各种web 内容。

如果不需要在 UIWebView 本身的 内滚动,并且您可以使用以下任一方式关闭滚动:

webView.userInteractionEnabled = NO;

webView.scrollView.scrollEnabled = NO;

那这个设计真的有问题吗?

我想知道这是否部分是原始 UIWebView 界面的产物,它没有给你 direct (and documented) access到其嵌入的 UIScrollView(以便能够轻松禁用其滚动)。也许 Apple 文档中的这个声明是它的遗留问题?

项目背景

我问是因为我正在维护一个应用程序(由其他人编写),该应用程序在允许在它们之间水平滚动的 ScrollView 中使用少量 Web View 。 Web 内容必须被认为是固定的(不可更改的),并且每个 HTML 页面仅显示一页内容。用户需要能够在页面之间滚动,因此为此选择了 UIScrollView 内的多个 UIWebViews。到目前为止,它似乎可能工作正常。

但是,页面显示全屏图像,滚动性能是个问题。但是,我试图确定网页 View 在 ScrollView 中的基本嵌套(Apple 警告不要这样做)是否真的是问题的一部分。

最佳答案

Apple 不建议将 UIWebViews 放在 UIScrollViews 中的唯一原因,如果您解释了这一点:因为滚动可能会混淆两个 ScrollView 。

我猜他们写这个是因为 UIWebView 继承了 UIView 而不是 UIScrollView,因此它本身不是 ScrollView (但是嵌入了一个),对于没有经验的用户来说,这可能并不明显,因为 web 内容可以根据 HTML 滚动,如果有的话,这会弄乱容器 ScrollView 。所以这可能只是对这种情况的提醒。

但是如果你禁用滚动,我看不出有任何原因会出错。

无论如何请注意,在 ScrollView 上禁用用户交互与禁用滚动不同。如果您的 HTML 内容包含链接或其他可点击/点击的内容,禁用用户交互也会禁用它们。要仅禁用滚动但保持用户交互如简单的点击,请使用 webview.scrollView.scrollEnabled = NO 而不是 webview.scrollView.userInteractionEnabled = NO

关于ios - 为什么不应该将 UIWebView 放在 UIScrollView 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12868999/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com