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

2023-11-27

问题

有谁知道在 iOS 上避免滚动视图内的 Web 视图的技术原因(假设您愿意禁用网络视图本身的滚动)?

如果你看在 Apple 文档中的 UIWebView,他们指出:

重要的:您不应将 UIWebView 或 UITableView 对象嵌入到 UIScrollView 对象。如果这样做,可能会导致意外行为 因为两个对象的触摸事件可能会混淆并且错误 处理。

我有根据的猜测

看起来他们可能警告您不要将滚动视图放入另一个滚动视图中,因为内部滚动视图和外部滚动视图之间的触摸可能会混淆。

但是,有一个非常充分的理由想要放置一个UIWebView在滚动视图内。网络浏览量不是just滚动视图。UIWebView可以轻松地显示各种web内容。

如果不需要允许滚动within the UIWebView本身,您可以使用以下任一方法关闭滚动:

webView.userInteractionEnabled = NO;

or

webView.scrollView.scrollEnabled = NO;

那么这样的设计真的有问题吗?

我想知道这是否部分是原作的产物UIWebView界面,它没有给你直接(并记录)访问到其嵌入的UIScrollView(能够轻松禁用其滚动)。也许苹果文档中的这个声明是它的遗产?

项目背景

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

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


苹果不建议放置的唯一原因UIWebViews inside UIScrollViews如果对于您解释的那个:因为滚动可能会导致两个滚动视图之间发生混淆。

我猜他们写这个是因为事实上UIWebView继承UIView并不是UIScrollView,因此本身不是滚动视图(但嵌入了滚动视图),对于没有经验的用户来说,这可能并不明显,因为 Web 内容可以根据 HTML 进行滚动,这会弄乱容器滚动视图(如果有)。所以这可能只是对这个案例的一个提醒。

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么 UIWebView 不应该放在 UIScrollView 中? 的相关文章

  • 如何在代码中编辑约束

    我有一个以 100 开始宽度限制的网页 当用户单击按钮时 我想将约束更改为 200 我试过这个 NSLayoutConstraint constrain NSLayoutConstraint constraintWithItem self
  • 在 UIWebView 中播放 Facebook 视频

    有谁知道如何在 Facebook 上播放视频UIWebView 我的应用程序将视频上 传到 Facebook 并检索视频的网址 我想将此网址嵌入到UIWebView播放 我已经为 youtube 解决了这个问题 但没有为 Facebook
  • 如何在 UIScrollView 中启用缩放

    如何启用缩放功能UIScrollView 答案是here https developer apple com documentation uikit uiscrollview 滚动视图还可以处理内容的缩放和平移 当用户做出捏合或张开手势时
  • UIView 圆角 - Swift 2.0?

    我会尝试将一些项目更新到 Swift 2 0 我有一个视图 左上角有一个圆角 在 Swift 没有警告 没有错误 只是没有圆角 这就是它在 Swift let maskPath UIBezierPath roundedRect conten
  • 是否可以跨 2 个不同的 iOS 应用程序访问数据?

    假设我在 App1 中存储了一些 ID 数据 并希望在同一设备上的 App2 中访问它 平台上可以这样吗 如果没有的话有什么解决方法吗 您可以使用iOS 钥匙扣 http developer apple com library ios do
  • 像 TraceGL 一样分析 Objective C 中的代码路径?

    TraceGL 是一个非常简洁的项目 它允许 JS 程序员跟踪 Javascript 中的代码路径 它看起来像这样 我想为 Objective C 构建类似的东西 我知道运行时使跟踪方法调用变得相当容易 但是我如何跟踪控制流 例如 在上面的
  • ios - 如何声明静态变量? [复制]

    这个问题在这里已经有答案了 C 中声明的静态变量如下 private const string Host http 80dfgf7c22634nbbfb82339d46 cloudapp net private const string S
  • 在 SWIFT 中发送本地通知

    我将此代码添加到我的第一个 ViewController 中 Step 1 Ask permission from User let center UNUserNotificationCenter current center reques
  • React Native facebook iOS sdk 构建失败

    我已遵循 Facebook 开发人员指南中列出的 iOS React Native sdk 的所有准则 但我仍然无法构建该应用程序 附上我的配置和构建日志的屏幕截图 Ld Users alaaattya Library Developer
  • 寻找可靠的方法来选择iPhone 13微距相机设备

    我正在使用 objc 开发一个应用程序 我必须选择 iPhone 13 Pro 和 13 Pro Max 中配备的新微距摄像头 目前 我在所有其他设备上选择我的相机 并剪掉此代码 AVCaptureDeviceDiscoverySessio
  • UIWebView:在 Safari 中打开一些链接,一些在视图中打开

    我的应用程序具有在 UIWebView 中呈现的内容 出于文本格式原因 内容中有一些链接 其中一些链接应在移动 Safari 中打开其目标 而其他链接则应在内容中导航 到目前为止 我已经使用 UIWebView 委托捕获了链接请求 在我的实
  • tableView:canEditRowAtIndexPath: 弹出 viewController 时崩溃

    我有一个带有UITableView 我允许通过滑动来编辑 删除 的行 就像在邮件应用程序中一样 我用以下方法来做到这一点 BOOL tableView UITableView tableView canEditRowAtIndexPath
  • 使用 HTTP NSURL 创建 AVAsset

    我正在尝试合并两个NSURLs包含视频参考 其中一个 URL 指向 AWS 上的视频 另一个 URL 指向本地存储的视频 我的导出代码有效 因为我已经尝试使用两个本地视频 但每当我尝试合并 HTTP url 和本地 url 时 我都会收到此
  • 如何在禁用状态下更改 UIButton 图像 alpha?

    我有一个带有图像的 UIButton 在其禁用状态下 该图像应具有 0 3 alpha UIButton button UIButton buttonWithType UIButtonTypeCustom UIImage arrowImag
  • 如何获得 UICollectionView 的矩形

    我想在 UICollectionView 中找到节标题的框架 我对 UITableView 也有类似的情况 为此 我能够通过执行以下操作来获得其正确性 CGRect rect self tableView rectForHeaderInSe
  • XOR或其他简单的文件混淆方法ios目标c

    我正在开发一个使用受版权保护的 pdf 文件的 ios 应用程序 我正在寻找一些简单的方法来混淆文件以确保安全 这些方法不需要我经历额外的大众市场 CCATS 加密审查流程 但也将确保版权所有者已尽我所能来保证他们的数据安全 当然 我用密码
  • Textview 中心文本对齐 IOS 7

    void observeValueForKeyPath NSString keyPath ofObject id object change NSDictionary change context void context NSLog He
  • iOS 上的推送通知渐进式 Web 应用程序

    我需要开发一个集成了推送通知的渐进式网络应用程序 在网上搜索我发现了关于这个主题的不同意见 如果我理解正确的话 目前我们无法在移动版 safari 中推送通知 但仅限桌面版 这样对吗 你有什么建议来获得相同的结果吗 我不是iOS专家 我想知
  • 如何从 App Store Connect 中删除自动创建的 macOS 应用程序

    I have an iOS app Recently macOS app automatically appeared in App Store Connect 我不打算在 macOS 上发布 iOS 应用程序 我怎样才能摆脱它 我打开了
  • 在启动屏幕中执行代码已更新

    在原始启动屏幕中执行代码 https stackoverflow com questions 27642016 execute code in launch screen 现在默认的LaunchScreenXcode 项目中的文件已更改为

随机推荐