如何在WKWebView中关闭OS X的智能引号替换?

时间:2015-07-16 13:29:12

标签: xcode macos wkwebview

我正在开发包含WKWebView的Mac应用程序。 Web视图中的HTML包含一个input字段,用户在其中键入代码(实际上是Ruby)。当我在这个字段中输入引号(")时,它会自动变成花哨的卷曲引号(“)。由于Ruby字符串使用ASCII引号作为分隔符,这是错误的。

目前我在使用用户输入的内容并在使用代码之前用弯引号替换为ASCII引号,但显然这并不理想。

我无法弄清楚如何禁用此OS X功能。显然,用户可以在全局级别的“系统偏好设置”中进行操作,但我只是想在我的应用中将其关闭。

WKWebView或应用程序包本身或其他地方是否有一些配置可以关闭它?有HTML或CSS选项吗?我应该使用不同类型的HTML输入字段吗?基本上,在整个堆栈中我可以进行干预以关闭此功能吗?

3 个答案:

答案 0 :(得分:4)

当您在“系统偏好设置”(键盘>文字>使用智能引号和短划线)中切换设置时,它会为用户的全局偏好设置域中的密钥NSAutomaticQuoteSubstitutionEnabled设置一个值。我通过比较之前和之后defaults read -g的输出确定了这一点。

您可以尝试在应用启动初期为您的应用域设置为false,看看是否会为您的应用禁用它:

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAutomaticQuoteSubstitutionEnabled"];

-applicationWillFinishLaunching:甚至main()中尝试。

当然,如果有效,它会在整个应用中停用它,而不仅仅是WKWebView

答案 1 :(得分:1)

如果您正在使用Xcode的界面生成器,请在选中文本域/文本框的情况下打开实用程序疼痛。在'属性检查员'您可以将键盘类型设置为ASCII。 enter image description here

要以编程方式执行此操作,请结帐this上一个问题&答案。

答案 2 :(得分:1)

经过一些试验,在Web视图中使用<textarea>出现此问题后,我发现通过添加spellcheck属性将禁用智能/花式引号替换。

<textarea spellcheck="false" ...>

据信(在撰写本文时)MDN currently makes no mention of spellcheck attribute "auto correcting" quotes在任何地方都没有记录。我以为autocorrectautocapitalize可以做到这一点,但是在Web视图的上下文中设置它们显然没有任何作用。

由于我当时正在使用React应用程序,因此属性使用驼峰式大小写,在这种情况下,属性是<textarea spellCheck="false" ...>