我正在开发包含WKWebView的Mac应用程序。 Web视图中的HTML包含一个input
字段,用户在其中键入代码(实际上是Ruby)。当我在这个字段中输入引号(")时,它会自动变成花哨的卷曲引号(“)。由于Ruby字符串使用ASCII引号作为分隔符,这是错误的。
目前我在使用用户输入的内容并在使用代码之前用弯引号替换为ASCII引号,但显然这并不理想。
我无法弄清楚如何禁用此OS X功能。显然,用户可以在全局级别的“系统偏好设置”中进行操作,但我只是想在我的应用中将其关闭。
WKWebView或应用程序包本身或其他地方是否有一些配置可以关闭它?有HTML或CSS选项吗?我应该使用不同类型的HTML输入字段吗?基本上,在整个堆栈中我可以进行干预以关闭此功能吗?
答案 0 :(得分:4)
当您在“系统偏好设置”(键盘>文字>使用智能引号和短划线)中切换设置时,它会为用户的全局偏好设置域中的密钥NSAutomaticQuoteSubstitutionEnabled
设置一个值。我通过比较之前和之后defaults read -g
的输出确定了这一点。
您可以尝试在应用启动初期为您的应用域设置为false,看看是否会为您的应用禁用它:
[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"NSAutomaticQuoteSubstitutionEnabled"];
在-applicationWillFinishLaunching:
甚至main()
中尝试。
当然,如果有效,它会在整个应用中停用它,而不仅仅是WKWebView
。
答案 1 :(得分:1)
如果您正在使用Xcode的界面生成器,请在选中文本域/文本框的情况下打开实用程序疼痛。在'属性检查员'您可以将键盘类型设置为ASCII。
要以编程方式执行此操作,请结帐this上一个问题&答案。
答案 2 :(得分:1)
经过一些试验,在Web视图中使用<textarea>
出现此问题后,我发现通过添加spellcheck
属性将禁用智能/花式引号替换。
<textarea spellcheck="false" ...>
据信(在撰写本文时)MDN currently makes no mention of spellcheck
attribute "auto correcting" quotes在任何地方都没有记录。我以为autocorrect
或autocapitalize
可以做到这一点,但是在Web视图的上下文中设置它们显然没有任何作用。
由于我当时正在使用React应用程序,因此属性使用驼峰式大小写,在这种情况下,属性是<textarea spellCheck="false" ...>
。