我正在开发一个可编辑的UIWebView
应用程序。我首先使用 HTML 加载 Web 视图,该 HTML 由单个 DIV 和contenteditable=true
. 我能够以编程方式强制此 DIV 关注这一行:
[self.webView stringByEvaluatingJavaScriptFromString:
@"document.getElementById('maindiv').focus()"];
这会将光标置于 DIV 内容的开头,并根据需要显示键盘。
如果我构建初始 HTML 以便maindiv
包含嵌套的内部 SPAN,如下所示:
<DIV ID="maindiv" contenteditable=true>This is some text to display.
<SPAN ID="innerspan">Hey, this is the text in the inner span</SPAN></DIV>
...然后我可以用这条线将焦点集中在这个内部跨度上:
[self.webView stringByEvaluatingJavaScriptFromString:
@"document.getElementById('innerspan').focus()"];
在这种情况下,光标位于“嘿,这是...”之前,这是内部跨度内容的开始,所以这完全符合我的要求。
当我最初加载仅包含的 HTMLmaindiv
然后动态插入innerspan
; 在这种情况下,试图强迫焦点innerspan
安静地失败。到目前为止,我尝试通过两种方式动态插入这个内部 SPAN:首先,使用document.execCommand('insertHTML' ...)
和传递 SPAN 的代码;其次,通过使用document.createElement('span')
and document.body.appendChild(var)
。这两种方法都“有效”,因为它们确实将内部 SPAN 代码添加到文档中(通过 确认document.body.innerHTML
),但似乎这些方法插入的 SPAN 无法以编程方式聚焦。
我怎样才能让我UIWebView
识别这个动态添加的元素并让它接收焦点?