Jayson Jayson - 2 months ago 22
iOS Question

`touchesBegan:withEvent:` is delayed at left edge of screen

I'm experiencing an issue where the first call to

touchesBegan:withEvent:
on a
UIView
or
UIViewController
is delayed when you touch on the left edge of the screen. This seems to be a new issue with iOS 10, and only happens on devices with 3D Touch (iPhone 6s and newer). In fact, if you disable 3D Touch in General->Accessibility, the issue goes away.

However, the issue doesn't seem to happen when you use
UIGestureRecognizers
. My workaround at the moment is to create a
UIGestureRecognizer
subclass that overrides the
touches*
methods and forwards them to my old implementation.

Is this just a bug or is there a way to get rid of the delay?

Answer

try adding this to the viewdidappear method. this might fix the issue. it happened with me as well but i got this code from stack overflow that fixed my issue. hope it helps you too

let window = view.window!
let gr0 = window.gestureRecognizers![0] as UIGestureRecognizer
let gr1 = window.gestureRecognizers![1] as UIGestureRecognizer
gr0.delaysTouchesBegan = false
gr1.delaysTouchesBegan = false
Comments