【问题标题】:How to programmatically enter 'selection mode' in a UIWebView?如何以编程方式在 UIWebView 中输入“选择模式”?
【发布时间】:2013-06-03 02:02:28
【问题描述】:

我正在尝试创建类似 iBooks 的体验,用户可以在其中突出显示文档中的文本。为此,我将 UIWebView 与 HTML 格式的文档一起使用。

我已经想出了如何捕捉初始选择突出显示,但无法做到,因此用户可以在制作完成后编辑或更改他们的突出显示。

我希望使用突出显示的范围预先定义一个 javascript 选择 DOM 对象,然后以编程方式进入“选择模式”。好像只能长按一段文字进入选择模式,然后自动为你创建Selection DOM Object。

如何通过 UIWebView 以编程方式进入选择模式?

【问题讨论】:

  • 在 PC 上,我可以在 JavaScript DOM 程序使用 shift-arrowkey 等进行选择后修改选择。我没有 100% 理解你的问题,你是说在使用 JavaScript 之后在 iOS 上进行用户不可修改的选择?
  • 您只是想从 UIWebView 中获取文本吗?请告诉我您的预期目标?这听起来就像你试图以错误的方式去做,我确实有另一个解决方案。你能粘贴你想要突出显示的 HTML 吗?
  • 我希望达到的效果类似于 iBooks 处理重新选择已突出显示的文本的方式。您长按最初创建一个突出显示,拖动引脚,然后选择您的样式。要在 iBooks 中编辑所选内容,请双击突出显示部分,蓝色选择部分会出现,并在您突出显示的文本周围带有图钉。因此,我正在寻找的具体行为是如何预先定义选择范围并让双击(或手势)重新选择该文本块,并将引脚放在正确的位置。
  • 那么您是如何完成这项工作的呢?还是你?
  • 不,去过几次 WWDC 并与开发人员谈过这件事。 Radar 已经提交,但他们还没有添加这个功能,即使 iOS 8 WebKit 的变化也没有。

标签: javascript ios uiwebview ibooks


【解决方案1】:

以下 SO 问题有帮助吗?

Highlight text range using JavaScript

或者看看

https://code.google.com/p/rangy/

Rangy 是一个跨浏览器的 JavaScript 范围和选择库。

【讨论】:

  • 没有。 UIWebView 会忽略 Selection 和 Range 对象,即使您创建它们也是如此。问题是 UIWebView 使用长按手势进入选择模式,然后它将选择定义为当前按下的单词是什么。
【解决方案2】:

您可以通过直接在其中执行 Javascript 字符串来操作网页。有一个方法:

- (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)javascriptString

在UIWebView。这将在您页面的 DOM 中执行任意脚本。将它与一些 jQuery 一起使用,也许您将能够做到这一点。所以也许你需要与你的 DOM 进行大量交互来模拟它。

【讨论】:

  • 感谢您试一试。
  • 无论你如何与 DOM 交互,在 UIWebView 中进入选择模式的唯一方法是长按。然后它不会尊重预定义的 Selection 或 Range DOM 对象,而是创建自己的。
猜你喜欢
  • 2012-11-09
  • 1970-01-01
  • 2014-02-01
  • 2020-06-15
  • 1970-01-01
  • 1970-01-01
  • 2013-04-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多