有很多关于如何在UIWebView
中获取所选文本的指南,但我似乎无法找到有关如何检测选择更改的任何内容。我知道我可以在其他地方检测点击并始终获得最新的选择,但我想创建一个包含所有这些功能的独立视图。
我目前有一个视图,它包含UIWebView
实例并处理解析并将内容传递到Web视图。据我所知,检测点击需要自定义窗口实现(指示here)。我想关注问题的分离,并尽可能避免任何自定义窗口实现。
任何想法如何才能在视图中实现这一目标?我已经尝试过javascript,但我想我是 不太适合它。
答案 0 :(得分:1)
您可以使用document.addEventListener("selectionchange")
,只要选择发生变化就会触发,并通过网桥将这些更改转发给Obj-C。
桥:
示例代码:
document.addEventListener("selectionchange", function(){
bridge.send("selectionchange"); // WebViewJavaScriptBridge
bridge.selectionChanged(); // JavaScriptCore
}, false);
答案 1 :(得分: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];
}