在 iOS 9 上快速单击无法在文本区域中键入内容

Cannot type into textarea with fastclick on iOS 9

过去几天我一直在寻找解决方案,但所有应该起作用的东西(根据文档)都不起作用。

我正在使用 fastclick 消除 HTML5 应用程序在 iPad 上 运行 的 300 毫秒延迟。一切都很好,除了我失去了将文本输入文本区域的能力。简单的单行字段有效,但多行文本区域无效。

当我点击文本区域时,键盘会弹出,我可以开始打字了。输入的第一个字母出现在文本区域 - 但仅此而已。随后的信件没有。如果我关闭键盘并再次点击文本区域,我可以输入另一个字母。

我已经尝试了所有建议,包括 needsclickneedsfocus 等。我尝试编辑 fastclick.js 以扩展处理 input 元素的特殊代码也涵盖 textarea - 什么都没有。

我正处于可能不得不放弃 fastclick 的地步,因为我已经在这个问题上浪费了将近一周的时间。然而,在我走那条路之前,也许有人能给我指出正确的方向。

请注意,问题出现在 iPad 和 iPhone 上 iOS 9.2(特别是 9.2.1 - 最新版本)。

好的,事实证明原因很简单-与fastclick无关。是 this answer 帮我解决了。

在我的 CSS 中,我有以下内容:

body * {
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    user-select: none;
}

body input {
    -webkit-touch-callout: text;
    -webkit-user-select: text;
    user-select: text;
}

这样做是为了应对愚蠢的用户,他们会 "touchstart" 按一下按钮然后开始考虑他们想要什么 - 在 "touchend" 之前,ios 然后会进入 copy/paste模式。

然后在输入中明确禁用它以允许在文本中使用 copy/paste。然而,我忘记在第二部分中包含文本区域。现在第二块看起来像这样:

body input, body textarea {
    -webkit-touch-callout: text;
    -webkit-user-select: text;
    user-select: text;
}

一切都按预期进行。

jQuery修复,

$('input.form-control,textarea').on('click',function(){
    $(this).focus();
});

这对我有效。