首先,我知道只有iOS 5才能解决这个问题 - 我们正在为iOS 5用户提供一项功能,允许使用contenteditable进行Rich Text粘贴。到目前为止,此功能非常有用,我想要做的就是当视图显示将contenteditable字段设置为活动状态时(预先选择它),以便键盘出现并且用户可以立即开始键入。这是我用于UIWebView的本地html文件
<html>
<body>
<div id="content" contenteditable="true" style="font-family: Helvetica">PLACEHOLDER</div>
</body>
</html>
我已经尝试使用一些javascript来完成此操作,使用我发现的用于预选文本输入的教程。即使我试图切换到文本输入字段进行测试,我也无法使用它。这可能是由于我对javascipt缺乏经验所以如果这是解决方案请明确(因为我对javascript完全不熟悉)。
感谢您的帮助
答案 0 :(得分:7)
现在如果有人想在iOS 6中实现这一点,他可以像这样以编程方式打开iOS键盘,
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
// keyboardDisplayRequiresUserAction available in iOS >= 6
if ([webView respondsToSelector:@selector(setKeyboardDisplayRequiresUserAction:)]) {
webView.keyboardDisplayRequiresUserAction = NO;
}
}
然后,
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// Assuming that you're using jquery. If not, use document.getElementById('YourInputElementID')
NSString *evalStr = [NSString stringWithFormat:@"setTimeout( function(){$('#YourInputElementID').focus();},1000);"];
[webView stringByEvaluatingJavaScriptFromString:evalStr];
}
这将在1秒后运行此javascript。为了安全起见,您应该在加载聚焦元素时调用聚焦代码。
答案 1 :(得分:4)
很遗憾,您无法在Mobile Safari中执行此操作。我相信Apple选择限制这种情况发生,因为当您访问某些网站时,例如Google,搜索字段会立即得到关注。如果他们去的每个网站,键盘弹出,这对用户来说非常烦人。在桌面上这种行为并不重要,但在移动设备上它非常明显。
答案 2 :(得分:2)
如果您处于点击事件处理程序的上下文中,则可以召唤键盘。
例如
document.body.addEventListener('click', function() {
content.focus();
}, false);
应该有效
答案 3 :(得分:0)
我在iOS上没有关于contenteditable的信息,但我认为你应该能够简单地创建一个范围并将其添加到选择中。
var input; // your contenteditable element
var range = document.createRange();
range.selectNodeContents(input);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);