SwiftUI:如何在TextEditor中禁用“智能引号”

我正在使用 SwiftUI 为 MacOS 开发基于 Python 的图形计算器。

https://github.com/snakajima/macplot

我使用 SwiftUI 的 TextEditor 作为 Python 代码的编辑器,但我无法弄清楚如何禁用智能引号(UITextInputTraits、smartQuotesType:UITextSmartQuotesType)。

        VStack {
            TextEditor(text: $pythonScript.script)
            HStack {
                Button(action: {
                    pythonScript.run(clear: settings.shouldClear)
                }, label: {
                    Text("Plot")
                })
                Toggle("Clear", isOn: $settings.shouldClear)
            }
            if let errorMsg = pythonScript.errorMsg {
                Text(errorMsg)
                    .foregroundColor(.pink)
            }
        }

回答

经过多次试验,我想出了以下解决方法。它依赖于 TextEditor 在 NSTextView 之上实现的事实,并在整个应用程序中更改其行为。它很丑,但有效。

// HACK to work-around the smart quote issue
extension NSTextView {
    open override var frame: CGRect {
        didSet {
            self.isAutomaticQuoteSubstitutionEnabled = false
        }
    }
}


以上是SwiftUI:如何在TextEditor中禁用“智能引号”的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>