当你的App中有 WebView 或者有 Text 文本的时候,毫无疑问,系统默认地会在你进行长按的时候,弹出一个框,来让你拷贝、粘贴、剪切文本等,亦或是弹出一个放大镜。
而当你进行开发的时候,往往很明确的知道自己的 WebView 希望展示的是什么东西,这个时候,你可能会希望自定义长按手势(LongPressGesture)的功能,而不是自带的弹出框。
然而当你做了一系列工作自定义了长按手势之后,却发现它的优先级是低于系统默认的弹出框的。
ios低版本的可以用下面的方法
[_webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';" ];
[_webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';" ];
在Xcode7IOS9上面这个方法就不适用了。
最后发现长按手势的默认属性中,有一个 minimumPressDuration 默认值是 0.5,也就是说,在长按了0.5秒时,我们自定义的长按手势执行方法和系统的冲突了,于是解决方法显而易见:把自定义长按手势的反应时间缩短到0.5s以内,这样就可以在系统方法执行之前完成操作,而事实上,你甚至可以简单粗暴地把它改为0.1s,依然不会和点按的 Tap 手势有冲突。
self.longPressPan.minimumPressDuration = 0.1