专栏首页KyXu【iOS开发】禁用 WebView 放大镜及拷贝粘贴弹出框

【iOS开发】禁用 WebView 放大镜及拷贝粘贴弹出框

背景: 当你的App中有 WebView 或者有 Text 文本的时候,毫无疑问,系统默认地会在你进行长按的时候,弹出一个框,来让你拷贝、粘贴、剪切文本等,亦或是弹出一个放大镜。 而当你进行开发的时候,往往很明确的知道自己的 WebView 希望展示的是什么东西,这个时候,你可能会希望自定义长按手势(LongPressGesture)的功能,而不是任由系统“智能”地帮助你。 然而当你做了一系列工作自定义了长按手势之后,却发现它的优先级是低于系统默认的弹出框的。

在 StackOverFlow 上面查找一番之后,发现一个可能对某些人有效的方法是:

webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitUserSelect='none';")
webView.stringByEvaluatingJavaScriptFromString("document.documentElement.style.webkitTouchCallout='none';")

将这两行代码加入到 webViewShouldLoadWithRequest 方法中,可以通过 JS 来修改网页。

【重点】

然而这并不是对所有情况都有效,甚至今天在 Xcode 7 GM + iOS 9 环境下,彻底失效了。纠结很久之后,发现

UILongPressGestureRecognizer.png

长按手势的默认属性中,有一个 minimumPressDuration 默认值是 0.5,也就是说,在长按了0.5秒时,我们自定义的长按手势执行方法和系统的冲突了,于是解决方法显而易见:把自定义长按手势的反应时间缩短到0.5s以内,这样就可以在系统方法执行之前完成操作,而事实上,你甚至可以简单粗暴地把它改为0.1s,依然不会和点按的 Tap 手势有冲突。

self.longPressPan.minimumPressDuration = 0.3

希望对大家有所帮助 :)

更新:在 StoryBoard 中拖动手势控件到 ViewController 的时候,不要拖动到 ViewController 的顶端,而要拖动到 ViewController 的 View 的部分,让它自动设置好手势的控制区域,否则无论怎么设置,手势都不会起作用。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 【iOS开发】Swift Print 高级用法

    这个东西不是我写的,出自 StackOverFlow,但我觉得实在是写得太好了,于是截取了该部分分享出来,感谢原作者。

    KyXu
  • 【iOS 开发】tableView updates 对比 reloadData

    如图有一个 TableView,每行显示这一行是第几行,现在我希望每按一次 update 按钮,就动态地在下方加两行。那么简单粗暴的做法是 ,更改数据源,然后...

    KyXu
  • 【面试】腾讯 iOS 开发实习电话面试记录(二)

    继上一篇文章【面试】腾讯 iOS 开发实习电话面试记录(一)后,又接到了第二个电话,继续记录。根据回忆写的,问题先后可能不对。

    KyXu
  • 泛函编程(4)-深入Scala函数类

    既然是泛函编程,多了解一下函数自然是免不了的了: 方法(Method)不等于函数(Function) 方法不是函数但可以转化成函数;可以手工转换或者由编译器(c...

    用户1150956
  • Scala入门与进阶(六)- Scala 函数高级操作

    Meet相识
  • 用Scala实现一个简单的Python的上下文管理器

    上下文管理器是对try/finally模式的简化,保证一段代码运行完后执行某项操作,即使那段代码被中止了,也会执行指定的操作。在这篇文章将展现函数式编程的威力,...

    哒呵呵
  • Apache实现反向代理负载均衡

    说到负载均衡LVS这套技术,有很多种实现方法。 本文所说,主要就是利用apache服务器实现反向代理,实现负载均衡。 首先,传统的正向代理如下图所示,正如我们用...

    用户1154259
  • 如何用googletest写单元测试

    googletest是一个用来写C++单元测试的框架,它是跨平台的,可应用在windows、Linux、Mac等OS平台上。下面,我来说明如何使用最新的1.6版...

    陶辉
  • 程序员的专属微信公众号编辑器:定制 Markdown 转 HTML

    近来几天,重新玩起了微信公众号,最不能忍受的就是那个编辑器,效率很低。虽然微信现在已经提供了模板功能,但是对于喜欢多平台发文的程序员来讲,维护多个内容成本过高。

    CDK8S
  • 《Kotlin极简教程》第二章 Hello,World 函数函数

    一个会写诗的程序员

扫码关注云+社区

领取腾讯云代金券