Bra*_*son 18 iphone uikit uitouch uigesturerecognizer ios
iOS应用程序UISystemGestureGateGestureRecognizers顶级安装的标准UIView是什么?
我的应用程序包含两个视图 - 一个填充屏幕的上半部分,另一个是自定义键盘,填充下半部分.我发现空格键上的水龙头并不总是有效,经过一些调查后发现底部20像素左右的点击事件的时间与视图的其余部分不同.对于大多数视图,touchesBegan/Ended之间的时间间隔约为100ms,而空格键则为1-2ms.(我的应用程序是一个模拟器,它太快,无法检测按键).
经过一番挖掘后,我发现UIView应用程序的主要部分(即:我的主视图的超级视图)已经UISystemGestureGateGestureRecognizer安装了2个.通过删除它们在ViewDidAppear屏幕的底部不再受影响.(据推测,这些是取消触摸按键事件到我的键盘因此更快的时间).
这些系统识别器至少出现在iOS 5到7以及iPad和iPhone上.我认为它们可能与从顶部/底部滑动相关,但此功能仍然适用于删除它们.
所以我有一个修复,但我想更多地了解这里发生了什么 - 特别是我可能会通过删除这些来解决.
hei*_*iko 17
这种延迟的触动也困扰着我.正如之前所说的那样,这是一个简单的修复:
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
}
Run Code Online (Sandbox Code Playgroud)
无需删除这些手势识别器.只需将其添加到主视图控制器.
看来这些识别器旨在防止屏幕顶部和底部附近的意外触摸.它们没有配置任何目标,但可以(像任何一样UIResponder)吸收触摸以防止它们被传递到响应链.
备注(在iOS 7.1上测试):
_targetsivar,发现它们根本没有配置任何目标.调出addTarget:action:以确认目标没有被动态添加或删除.delegate总是nil适用于两种情况.| 归档时间: |
|
| 查看次数: |
3316 次 |
| 最近记录: |