关于如何在UIWebView获取选定的文本,有很多指南,但是我似乎找不到任何有关如何检测选择变化的指南。 我知道我可以在其他地方简单地检测出水龙头,并始终获得最新的选择,但是我想创建一个包含所有这些功能的独立视图。

我目前有一个包含UIWebView实例并处理解析并将内容传递到Web视图的视图。 据我所知,检测轻敲将需要自定义窗口实现( 此处指示)。 我想将关注点分开,并尽可能避免任何自定义窗口实现。

有什么想法可以在视图中实现吗? 我已经尝试过javascript,但我想我没有那么干。

===============>>#1 票数:1 已采纳

您可以使用document.addEventListener("selectionchange") ,只要选择更改,该document.addEventListener("selectionchange")就会触发,并将这些更改通过网桥转发给Obj-C。

桥:

  1. WebViewJavascriptBridge
  2. JavaScript核心

示例代码:

document.addEventListener("selectionchange", function(){
    bridge.send("selectionchange"); // WebViewJavaScriptBridge
    bridge.selectionChanged();  // JavaScriptCore
}, false);

===============>>#2 票数:0

如果我没有完全误会,则无法使用UIWebView和javascript组合来检测选择范围是否发生了变化。 我的解决方案是轮询选择范围,而不是通知其更改。 目前,我不需要实时更新,因此仅知道是否有选择就足够了。 根据需要检索文本选择,对于选择更改,我使用UITapGestureRecognizer

为了清除选择,我不得不使用一个小的延迟。 点击后不会立即清除选择。

- (void)tap:(id)sender
{    
    [self updateSelection];
    // A simple hack to detect when selection is cleared.
    [self performSelector:@selector(updateSelection) withObject:self afterDelay:0.5];
}

  ask by mkko translate from so

未解决问题?本站智能推荐:

2回复

在UIWebView中检测单击,但仍支持文本选择和链接

我正在使用JavaScript来检测我在UIWebView中显示的页面中的点击,如下所示: 我正在拦截与我的网络视图委托的链接,并寻找“internal:// tap”。 当我得到它时,我阻止Web视图导航,并响应点击。 但是这样做我失去了选择文本的能力。 点击链接仍然可以正常工作
3回复

如何检测UIWebView何时开始选择文本?

我有一个UIWebView ,它显示静态内容并通过其控制器对各种滑动手势做出反应。 文本选择已被禁用,但是现在我正在开发一项新功能,以允许选择文本并显示自定义上下文菜单。 现在,我需要能够检测到何时选择了文本,以便可以关闭滑动手势。 我能想到的唯一方法是在滑动处理程序方法中使用
3回复

以编程方式在UIWebView中选择文本

经过2天的研究,我问这个问题。 我已经阅读了stackoverflow和google中的所有相关问题和答案(包括这个问题,这是非常相似但没有答案)仍然无法找到解决方案。 希望有人能够提供帮助。 我有一个UIWebView,其中加载了一些文本。 我想以编程方式选择文本的一部分,就像用户
2回复

IOS:如何在内容可编辑div中检测UIWebView上的用户更改文本

使用带有可编辑内容的UIWebView时,用户可以在可编辑的DIV上键入自己的文本。 有没有办法在每次用户更改可编辑文本时触发ViewController上的事件(类似于the UITextField值更改事件)? ViewController需要知道用户何时更改为文本有两个原因;
1回复

如何在UIWebView中更改用户的选择范围?

以下JavaScript代码可以在UIWevView中更改用户的选择范围,但iOS选择保持不变。 如何同步这两个选项,因此当应用程序使用JavaScript更改选择时,iOS选择也会更改。 可能吗?
2回复

检测何时在UIWebView中打开/关闭本机选择窗口小部件

当用户单击UIWebView的select框时,带有可用选项的本机弹出窗口显示在屏幕底部。 网页内容向上滚动以为该弹出窗口腾出空间。 尽管body.scrollTop的值确实发生了变化,但滚动时似乎没有触发DOM事件。 有什么方法可以检测到何时打开弹出窗口,还是必须使用setInter
1回复

尝试以编程方式在UIWebView中选择文本时setStart和setEnd引发错误

这是我在UIWebView中使用的一些HTML: 轻触链接后,我想以编程方式在UIWebView中选择链接文本(因此,现在将使用蓝色iOS文本选择工具突出显示“这是一个链接”)。 这就是为什么我在a标签的href中发送一些范围信息的原因。 这是我用来尝试进行此程序化选择的调用:
1回复

调整UIWebView文本的大小

我试图让用户调整给定网页的文本大小。 我在Xcode 6中使用Swift。HTML文件: 这是我正在调用的swift函数以尝试更改大小: 我知道javascript正在运行,因为当我在javascript中运行alert()函数时,它起作用了。 请帮助我找出我的代码有什么问题
1回复

在UIWebView中检测Javascript / Ajax更改

我正在尝试查看是否为我的用户加载了某个页面。 用户在UIWebView中进行注册过程,我想知道它何时完成。 问题是注册不会更改网页,它使用Javascript和Ajax来更新屏幕上的内容。 运行: 在webViewDidStartLoad仅在初始站点的第一次加载时返回。 基本上,
1回复

在uiwebview中禁用“复制”,但不禁用“选择”。

我想在uiwebview中禁用“复制”,但不禁用“选择”选项。 我该怎么做呢? 这是因为我在JavaScript中使用window.getSelection()来选择用户选择并对其进行一些处理。 不需要“复制” uimenucontrolleritem和打开的“复制”功能,它们会使我的应用