禁用智能引号的NSTextView仍会替换引号

时间:2013-11-06 00:06:33

标签: xcode macos cocoa

我有一个禁用了'智能报价'选项的NSTextView:

Smart Quotes disabled

但是,如果我输入:

'你好世界'

在textview中,它实际上被替换为:

'你好世界'

(请参阅如何更换单引号。)

我认为禁用智能引号可以解决这个问题,但似乎并没有帮助。关于如何让这些更漂亮的报价消失的任何建议?

5 个答案:

答案 0 :(得分:39)

您可以使用以下命令禁用NSTextView的智能引号:

self.textView.automaticQuoteSubstitutionEnabled = NO;

自OS X 10.9 Mavericks以来,未在界面构建器中设置复选标记似乎不起作用。

请参阅NSTextView setAutomaticQuoteSubstitutionEnabled:

此外,您可以使用它来更详细地控制文本替换。

self.textView.enabledTextCheckingTypes = 0;

请参阅NSTextView setEnabledTextCheckingTypes:

同样在Mavericks中,系统偏好设置→键盘→文本中默认启用智能引号。您可以将此作为个人偏好禁用。

答案 1 :(得分:9)

从Yosemite / Xcode 6.1

开始,此问题仍然无法解决

要关闭IB似乎忽略的所有替换选项,我必须这样做:

self.textView.automaticQuoteSubstitutionEnabled = NO;
self.textView.automaticDashSubstitutionEnabled = NO;
self.textView.automaticTextReplacementEnabled = NO;

答案 2 :(得分:5)

Xcode 7.3仍然存在这个问题。

在IB中设置这些属性的方法。

enter image description here

答案 3 :(得分:2)

Swift 4扩展以使任何NSTextView等宽字体

  • 适合JSON编辑
  • 关闭智能报价
  • 使用等宽字体
  • 可以在IB完成,但是我遇到了问题

用法:

Byte[]

NSTextView + PlainText.swift

 @IBOutlet var textViewJSONPushBody: NSTextView!
 @IBOutlet var textViewConsole: NSTextView!

  ... viewDidLoad(){
         //JSON editor - larger font
         self.textViewJSONPushBody.makePlainText(withFontSize: 12.0)

         //Log view - smaller
         //defaults to sys font - small size
         self.textViewConsole.makePlainText()
         //or set fontSize
         self.textViewConsole.makePlainText(withFontSize: 10.0)
    }

enter image description here

答案 4 :(得分:0)

Swift 5解决方案:

self.textview.smartQuotesType = .no
self.textview.smartDashesType = .no