自从安装 iOS 11.1 以来,我们发现屏幕顶部和底部的条带对触摸没有响应。这会影响我开发的横向应用程序和纵向应用程序(它们使用金属 API 进行渲染)。在其他一些开发者的应用程序上也观察到了这个问题,例如Golf Clash 但不是其他 - 由于我们使用内部引擎,因此我们的应用程序和其他开发人员的应用程序之间没有共享代码。
这是功能更改还是解决方法的已知问题?我在 StackOverflow、Apple 开发者论坛或 Apple 文档中找不到任何信息。
也许这与 iOS 11 中出现的安全区域的引入有关,我们的游戏尚未完全支持安全区域(但我没想到安全区域会影响触摸,或出现在现有设备上)。也许这与新的通知向下滑动和控制中心向上滑动行为有关 - 我们注意到它们过去常常在第一次滑动时打开一个选项卡,但现在它们立即打开,进入设置并禁用控制中心在应用程序中并不能修复它。
在 iPhone 6 和 iPhone 6S 上均观察到,因此它不太可能与 3D 触摸功能相关,因为 iPhone6 不支持该功能。
编辑:将在睡眠后进一步调查,但我认为实际上正在生成违规区域的触摸事件。问题是时间问题之一,通常在touchesEnded事件之前大约20-50ms接收touchesBegan事件,即使是快速按下也是如此。然而,在这些顶部和底部区域,我几乎在touchesBegan之后立即收到touchesEnded事件(不到1毫秒)。我的工作原理是,iOS 会阻止触摸事件以查看它是否成为滑动手势,并且只有在确定不会将其作为滑动手势处理时才发送 TouchBegan 事件。可能必须改进我的输入代码,以便一开始就结束的触摸不会落入裂缝并最终被游戏代码忽略(不幸的是轮询触摸状态而不是事件驱动)。
如果您希望手势优先于系统手势,您应该覆盖属性preferredScreenEdgesDeferringSystemGestures
在你的视图控制器中。
像这样:
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge {
return .all
}
See the docs
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)