在 UIWebView 中操作后隐藏文本选择句柄

Posted

技术标签:

【中文标题】在 UIWebView 中操作后隐藏文本选择句柄【英文标题】:Hide text selection handles after action in UIWebView 【发布时间】:2010-08-22 16:48:49 【问题描述】:

我有几个自定义 UIMenuItems,它们通过 UIWebView 中的选择来执行操作。在对该选择运行操作后,我想像copy: 一样隐藏选择句柄。

我尝试过使用window.getSelection().removeAllRanges();,它的工作原理是window.getSelection() 不再返回任何内容,但文本选择句柄保持可见。

有没有办法删除选择和手柄?

编辑:我不需要它是一个 JS 解决方案,但我不能通过重新加载 webview 来失去状态。

【问题讨论】:

Matt - 在我的手机(和模拟器)上,复制:选择时不会隐藏选择句柄。它在你的身上吗?如果您找到了解决方案,请发布您的解决方案 - 我也在努力解决这个问题。 Tom – 嗯,你是对的......也许这是不可能的事情。我正在做的是获得选择并用新的 div 围绕它。我不喜欢的是蓝色选择句柄然后显示在所选文本的旧位置,例如带有两个蓝点的 I。相关的问题是,如果我以编程方式更改选择,我不相信蓝色文本选择框会调整到该新范围。 这与我经历过的行为相同。似乎无法从 javascript 更改选择范围。 【参考方案1】:

只需禁用并重新启用用户交互:

myWebView.userInteractionEnabled = NO;
myWebView.userInteractionEnabled = YES;

【讨论】:

太棒了!你赚了!当它如此简单时,你知道你有正确的解决方案......:) 谢谢。我喜欢用简单的方法解决明显困难的问题:) @Sylter - 谢谢。如果这个答案在谷歌上更容易找到! 这在 ios 5 上似乎对我不起作用,还有人可以让它工作吗? 如果包含很大或者我们 userInterfacetionEnable=NO 则无法滚动 Webview【参考方案2】:

如果您的数据只是文本,您可以简单地刷新 webview,然后没有正文可以跟踪 webview 已刷新

使用此代码

[webview reload];

我在我的应用程序中做了这件事,效果很好

【讨论】:

我无法重新加载整个 webview,因为这会改变 webview 中的状态。我只需要让那些把手消失。 ;)【参考方案3】:

[_webview becomeFirstResponder];在你的行动之后。

你只需要这个。我一直用这种方式。

【讨论】:

以上是关于在 UIWebView 中操作后隐藏文本选择句柄的主要内容,如果未能解决你的问题,请参考以下文章

如何从 webview 隐藏文本选择句柄:android

当用户单击 UIWebView 内的文本字段时,出现键盘后屏幕不会向上移动

检测 UIWebView 文本选择中的文本选择变化

确定 UIWebView 是不是处理事件

在 iOS Mobile Safari 和/或 UIWebView 中控制文本选择行为?

UIWebView 被键盘隐藏