ios – UISystemGateGestureRecognizer和屏幕底部附近的延迟抽头

前端之家收集整理的这篇文章主要介绍了ios – UISystemGateGestureRecognizer和屏幕底部附近的延迟抽头前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
iOS应用程序的顶级UIView上安装的标准UISystemGestureGateGestureRecognizer是什么?

我的应用程序包含两个视图 – 一个填充屏幕的上半部分,另一个是自定义键盘,并填充下半部分.我发现空格键上的水龙头并不总是奏效,经过一番调查发现,最近20个像素左右的水龙头事件的时间与其余部分不同.对于大多数观点来说,touchesBegan / Ended之间的时间段约为100ms,而对于空格键为1-2ms. (我的应用程序是一个模拟器,这太快了,无法检测到按键).

经过一些挖掘,我发现了应用程序的主UIView(即:我的主视图的超级视图)已经安装了2个UISystemGestureGateGestureRecognizer.通过在ViewDidAppear中删除它们,屏幕底部不再受到影响. (推测这些是取消触摸按钮事件到我的键盘,因此更快的时间).

这些系统识别器至少在iOS 5到7以及iPad和iPhone上都有.我以为他们可能与顶部/底部滑动相关,但这个功能仍然可以与他们移除.

所以我有一个修复,但我想了解更多关于这里发生了什么 – 特别是我可能通过删除这些破坏.

解决方法

这个延迟的困扰也使我也困扰着我.
就像之前所说的一样,
这是一个简单的修复:
override func viewDidAppear(_ animated: Bool) {
    let window = view.window!
    let gr0 = window.gestureRecognizers![0] as UIGestureRecognizer
    let gr1 = window.gestureRecognizers![1] as UIGestureRecognizer
    gr0.delaysTouchesBegan = false
    gr1.delaysTouchesBegan = false
}

不需要删除那些手势识别器.只需将其添加到主视图控制器.

猜你在找的iOS相关文章