當你的App中有 WebView 或者有 Text 文本的時候,毫無疑問,系統默認地會在你進行長按的時候,彈出一個框,來讓你拷貝、粘貼、剪切文本等,亦或是彈出一個放大鏡。
而當你進行開發(fā)的時候,往往很明確的知道自己的 WebView 希望展示的是什么東西,這個時候,你可能會希望自定義長按手勢(LongPressGesture)的功能,而不是自帶的彈出框。
然而當你做了一系列工作自定義了長按手勢之后,卻發(fā)現它的優(yōu)先級是低于系統默認的彈出框的。
ios低版本的可以用下面的方法
[_webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitUserSelect='none';" ];
[_webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.webkitTouchCallout='none';" ];
在Xcode7IOS9上面這個方法就不適用了。
最后發(fā)現長按手勢的默認屬性中,有一個 minimumPressDuration 默認值是 0.5,也就是說,在長按了0.5秒時,我們自定義的長按手勢執(zhí)行方法和系統的沖突了,于是解決方法顯而易見:把自定義長按手勢的反應時間縮短到0.5s以內,這樣就可以在系統方法執(zhí)行之前完成操作,而事實上,你甚至可以簡單粗暴地把它改為0.1s,依然不會和點按的 Tap 手勢有沖突。
self.longPressPan.minimumPressDuration = 0.1