【发布时间】:2023-03-30 04:30:02
【问题描述】:
在 iOS 应用的顶层 UIView 上安装的标准 UISystemGestureGateGestureRecognizers 是做什么用的?
我的应用包含两个视图 - 一个填充屏幕的上半部分,另一个是自定义键盘并填充下半部分。我发现空格键上的点击并不总是有效,并且经过一些调查发现底部 20 像素左右的点击事件的时间与视图的其余部分不同。对于大多数视图来说,touchesBegan/Ended 之间的时间间隔约为 100 毫秒,而空格键则为 1-2 毫秒。 (我的应用是模拟器,速度太快,无法检测到按键)。
经过更多挖掘,我发现应用程序的主要UIView(即:我的主视图的超级视图)安装了 2 个UISystemGestureGateGestureRecognizer。通过在ViewDidAppear 中删除它们,屏幕底部不再受到影响。 (大概这些是取消对我的键盘的触摸按下事件,因此时间更快)。
这些系统识别器至少存在于 iOS 5 到 7 以及 iPad 和 iPhone 上。我认为它们可能与从顶部/底部滑动有关,但此功能在删除它们后仍然有效。
所以我有一个修复,但我想了解更多关于这里发生了什么 - 特别是删除这些可能会破坏什么。
【问题讨论】:
-
我无法告诉你它们是什么,但 UIWindow 中似乎定义了其中两个:github.com/nst/iOS-Runtime-Headers/blob/master/Frameworks/… 也许打印它们的目标,我们可以更好地推断它们的功能是什么。
标签: ios iphone uikit uigesturerecognizer uitouch