立即编辑一个可编辑的 UIWebView

Immediately editing a editable UIWebView

我正在使用启用可编辑 UIWebView 的标准机制(div 标记中的 contenteditable 属性)。

一切都很好 - 当我加载我的视图时,UIWebView 加载,当我单击时,我进入编辑模式。

但是,我想要做的是当我的视图加载时,立即进入编辑模式并让光标从 div.

的开头开始

有人知道怎么做吗?我尝试使用 stringByEvaluatingJavaScriptFromString 在我的 HTML 中调用一个 JS 方法,该方法在 <div> 上执行 .focus() 但它不起作用。

我认为这与在 Safari 中禁用以编程方式启动键盘有关。默认情况下,UIWebView 不允许以编程方式启动键盘。但是,您可以在创建 UIWebView 时从 Swift 端启用此功能。只需将 keyboardDisplayRequiresUserAction 设置为 false.

有关详细信息,请参阅 Apple's documentation

注意:我没有对此进行测试,contenteditable 可能还有其他问题,但这是开发移动网络应用程序时的常见问题。

感谢 Teemu 的提示,我终于弄清楚了如何完成这项工作。我必须执行以下操作:

首先,正如 Temmu 提到的,我必须在 viewDidLoad.

中将 keyboardDisplayRequiresUserAction 设置为 false

其次,假设我的可编辑内容在 <div id="content">...</div> 中,我在 div 之后注入了以下 Javascript

<script>document.getElementById('content').focus();</script>

有了这两件事,当我的视图加载时,UIWebView 立即将焦点放在 div 上并弹出键盘。