iOS:为什么touchesBegan在UIView的某个特定区域有一些延迟

Tom*_*yer 7 delay touchesbegan ios swift

我正在制作一个自定义键盘,我的处境非常奇怪.

我注意到当我在UIView(inputView)的左后方(大约20个像素)处捕获事件touchesBegan时,我会在这里有一些延迟.我在touchesBegan中所做的任何动作都会比其他区域执行得慢.

override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?)
{
self.keypop.hidden = false
}

override func touchesEnded(touches: Set<UITouch>, withEvent event: UIEvent?) {
{
self.keypop.hidden = true
}
Run Code Online (Sandbox Code Playgroud)

这个问题会影响我的应用程序的性能.在这个例子中,当我触摸左后方时,我不会看到keypop出现因为self.keypop.hidden显示延迟了.

我不知道为什么,或者这是iOS 9的错误?我一直坚持这个麻烦一个星期.

Ben*_*enB 6

这里的答案似乎修复了我们键盘中的相同问题:

UISystemGateGestureRecognizer和屏幕底部附近的延迟点击

使用以下代码:

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)


小智 5

在我的情况下,我在CollectionView中使用touchBegan,当我点击它时,它会延迟触摸,只需添加以下代码即可

在Swift中,

self.collectionView.delaysContentTouches = false
/*delaysContentTouches applies to all UIScrollView instances.*/
Run Code Online (Sandbox Code Playgroud)