选定时重置NSTextField字体样式

Wes*_*loy 1 macos cocoa interface-builder

内容:

在Interface Builder中,我有一个不可编辑的标签(NSTextField)。标签的内容是使用Cocoa绑定创建的。绑定的值是NSAttributedString(使用talue转换器创建的)。见图片:

捆绑

值转换器实质上按照Markdown格式(即,斜体和粗体)为特定字符指定字体。这样String-> NSAttributedString。标签的attributedStringValue已适当更改

问题:

在UI中选择标签时。字体重置为IB中指定的字体,而不是设置为的字体NSAttributedString。如果您不选择文本,那么一切看起来都会很好。

在点击标签之前:

在此处输入图片说明

单击/选择标签后:

在此处输入图片说明

尝试的解决方案:

  • 我已经尝试了子类化,NSTextField但是没有真正要覆盖的东西,它使我可以在选择文本时禁用任何字体更改。
  • 我尝试禁用富文本。通过不更改普通文本,这实际上有很大帮助,但是仍然从粗体和斜体文本中去除了格式
  • NSTextViews not NSTextFields 存在的大多数类似问题

Eug*_*ski 5

您需要设置allowEditingTextAttributes = true

例如:

class ViewController: NSViewController {

dynamic var markdownText : String?

@IBOutlet weak var label: NSTextField!

override func viewDidLoad() {

    super.viewDidLoad()

    label.allowsEditingTextAttributes = true
}
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以像我的示例一样选择文本:

在此处输入图片说明

这是代码:https : //github.com/emankovski/BindingFormattedText