UIWebView在textarea标签上的长按手势崩溃

时间:2013-11-18 21:35:20

标签: javascript html ios uiwebview textarea

我想为UIWebView使用自定义键盘。自定义键盘应该是所有HTML / JS / CSS才能用于多个设备。出于这个原因,我添加了一个通知如下:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow) name:UIKeyboardWillShowNotification object:nil];

为了不允许自然键盘出现,我在调用通知时添加了以下方法。

- (void)keyboardWillShow
{
    [self.webViews endEditing:YES];
}

在HTML文件中我有:

<!DOCTYPE>  
<head>  
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />  
    <title>keyboard</title>
    <link rel="stylesheet" type="text/css" href="css/style.css" />
</head>  
<body>  

<div id="container">
    <textarea id="write"></textarea>
</div>
</body>  
</html>

问题是,当我在UIWebView中运行此HTML文件并在textarea上进行longpress或双击时,它会使应用程序崩溃。 如果我删除[self.webViews endEditing:YES];它不会使应用程序崩溃但它会调出键盘。

当用户双击或长按textarea时,我怀疑在UIWebView上“复制/粘贴/选择所有”选项。我试图禁用它们但它没有用。 任何想法将不胜感激。

3 个答案:

答案 0 :(得分:0)

自定义键盘需要采用不同的方法。

这里有一个很好的解释,包括一些代码示例: Customizing the iOS keyboard

这里还有另一个关于SO的讨论和关于这个问题的链接: How to create a custom keyboard

答案 1 :(得分:0)

这是Apple Bug#15535639,我希望他们能尽快解决。

答案 2 :(得分:0)

尝试这种解决方法,它对我有用。

- (void)keyboardWillShow
{

    dispatch_async(dispatch_get_main_queue(), ^{
    [self.webViews endEditing:YES];
    });
}