【问题标题】:How can I turn off OS X's Smart Quotes replacement in my WKWebView?如何在我的 WKWebView 中关闭 OS X 的智能引号替换?
【发布时间】:2015-07-16 13:29:12
【问题描述】:

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

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

我不知道如何禁用此 OS X 功能。显然,用户可以在全局级别的系统偏好设置中进行操作,但我只想在我的应用程序中将其关闭。

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

【问题讨论】:

    标签: xcode macos wkwebview


    【解决方案1】:

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

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

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

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

    当然,如果这可行,它将在您的整个应用程序中禁用它,而不仅仅是您的WKWebView。

    【讨论】:

    • 谢谢!特别感谢你解释你是怎么想出来的,这非常有用(教一个人钓鱼和所有:)
    【解决方案2】:

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

    <textarea spellcheck="false" ...>
    

    AFAIK(在撰写本文时)没有记录在任何地方,MDN currently makes no mention of spellcheck attribute "auto correcting" quotes。我想 autocorrect 或 autocapitalize 会这样做,但在 web 视图的上下文中设置这些显然不会做任何事情。

    因为我当时正在开发一个 React 应用程序,所以属性是驼峰式的,在这种情况下它是 &lt;textarea spellCheck="false" ...&gt;。

    【讨论】:

      【解决方案3】:

      如果您使用的是 Xcode 的 Interface Builder,请打开实用程序痛苦并选择您的文本字段/文本框。在“属性检查器”下,您可以将 键盘类型 设置为 ASCII。

      要以编程方式执行此操作,请查看 this 上一个问题和答案。

      【讨论】:

      • 感谢您的回答,但正如我在问题中提到的,文本字段是 HTML 文本字段而不是 Cocoa 文本字段。
      猜你喜欢
      • 2011-10-21
      • 2014-10-25
      • 2010-10-14
      • 1970-01-01
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      • 1970-01-01
      • 2021-02-07
      相关资源
      最近更新 更多