在 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 中操作后隐藏文本选择句柄的主要内容,如果未能解决你的问题,请参考以下文章
当用户单击 UIWebView 内的文本字段时,出现键盘后屏幕不会向上移动