因项目需要,开发一个签名画板,方案是利用touchesBegan
、touchesMoved
记录手指轨迹进行绘图,这个不复杂,无需多述。功能完成后遇到一个问题:手指从屏幕左侧边缘滑动无法触发touchesBegan
,具体表现为从屏幕左侧边缘往右无法画线,但是从右往左可以将线画至屏幕边缘。一顿Google操作后终于找到原因,原来是导航栏的侧滑手势与绘图手势冲突(应该是侧滑手势的识别阻碍了touchesBegan
的响应),因为我的签名界面无需侧滑回退,故关闭回退手势,成功解决问题:
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
self.navigationController.interactivePopGestureRecognizer.enabled = NO;
self.navigationController.interactivePopGestureRecognizer.delegate = nil;
}
网上有提到3D Touch的手势会导致类似问题,经自测,我的问题并不是该原因导致。
参考链接: 'touchesBegan:withEvent:' is delayed at left edge of screen
虽然该链接提到的是3D Touch,但是给了我思路,如果关闭回退手势不能解决您的问题,不妨试试关闭3D Touch手势。