【问题标题】:Cordova iOS iPhone X - Home indicator - Edge protection - DeferringSystemGestures?Cordova iOS iPhone X - 主页指示器 - 边缘保护 - DeferringSystemGestures?
【发布时间】:2018-07-26 12:59:13
【问题描述】:

我正在开发一个使用 Cordova 构建的适用于 iOS 和 Android 的网络应用程序。一切都很好,直到我对新的 Apple 的 iPhoneX 进行了测试。如您所知,Apple 决定移除物理主页按钮,将其替换为屏幕底部的主页指示器:

此主页指示器始终在您的屏幕上可见,并且会覆盖您的网络应用内容。当用户想要在应用程序之间导航或返回主屏幕时,他必须向上滑动这个主页指示器(这是非常敏感的)。这个奇妙的发明给我的 webapp 带来了 2 个主要问题:

  1. 这会破坏我的 Web 应用设计,因为它会覆盖内容。
  2. 系统手势输入与我的 webapp 手势冲突。我的整个游戏玩法都是基于拖放操作,所有可拖动的图标都位于屏幕底部的主页指示器下方。

1。如何隐藏主页指示器?

为了解决第一点,我找到了一个名为cordova-plugin-hide-home-indicator 的插件。这将在几秒钟不活动后隐藏(带有淡入/淡出效果)主页指示器。但是每次检测到触摸屏事件时,主页按钮都会再次可见......我有红色here 即使Objective C(Xcode)函数 prefersHomeIndicatorAutoHidden() (我猜是使用通过这个 Cordova 插件)返回 true 这并不意味着主页指示器将永远隐藏。嗯...如果有人有更好的解决方案,我将不胜感激!

2。如何锁定系统手势?

我发现了一个名为 preferredScreenEdgesDeferringSystemGestures() 的 Xcode 函数,他们解释说通常系统将始终优先处理应用程序手势,但在某些情况下(例如沉浸式游戏)你可以要求你的应用程序优先于系统。这听起来很棒!但不幸的是我对Objective C一无所知:)我没有找到任何关于这一点的插件。

在 10:33 来自 Apple 的 video 中,他们讨论了 边缘保护,这应该可以通过赋予应用程序手势优先级来解决问题,但同样,我没有找到任何Cordova 插件...

有什么想法吗?谢谢!

【问题讨论】:

    标签: ios cordova plugins gesture iphone-x


    【解决方案1】:

    不要隐藏主页指示器。 Apple 的解决方案是使用新的 CSS 常量作为设备安全区域的填充。阅读本文以获得起点:iPhone X support

    【讨论】:

    • 是的,您对第 1 点是正确的。我也读过这篇文章,我不会试图隐藏主页指示器。但是第 2 点呢?我见过一些使用preferredScreenEdgesDeferringSystemGestures() 函数的游戏(例如:earthtone)。这样,用户第一次向上滑动主页指示器时,您会看到它上升并亮起,但这不会将您带回主屏幕。这只是您第二次做这个手势,您将退出游戏。所以应用手势可以优先于系统手势。关于如何在 Cordova 应用程序中执行此操作的任何线索?谢谢!
    • 您对那个 API 的看法是正确的。要使用手势保护从底部边缘滑动,您对该 API 的看法是正确的。但是要在 Cordova 中使用它,您需要制作一个插件来与之交互。
    • 感谢您的回答,我将阅读有关在 Cordova 上创建插件的更多信息。但是如果没有 Objective-C 方面的知识,这会很困难:)
    【解决方案2】:

    您可以使用此插件来避免 iOS 上的边缘手势

    https://github.com/distinctdan/cordova-plugin-screen-edges

    它非常易于使用,我在一个cordova项目中使用过,它可以按预期工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-23
      • 2012-03-24
      • 1970-01-01
      相关资源
      最近更新 更多