NSTextView不会更改NSFontPanel

时间:2017-04-02 02:30:54

标签: cocoa swift3 nstextview nsstoryboard nsfontpanel

我创建了一个基本的NSTextView,我在Interface Builder中选择了以下选项:

  • 可编辑
  • 可选
  • Field Editor
  • 富文本
  • 撤消
  • 图形
  • 非连续布局
  • 字体面板
  • 标尺
  • Inspector Bar

我将NSViewController设置为NSTextView的委托,而我为此NSTextView所做的唯一其他自定义操作是启用插入标签和新行(通过接受第一响应者):

    func textView(_ textView: NSTextView, doCommandBy commandSelector: Selector) -> Bool {

    if commandSelector == #selector(insertNewline(_:)) {
        textView.insertNewlineIgnoringFieldEditor(self)
        return true
    } else if commandSelector == #selector(insertTab(_:)) {
        textView.insertTabIgnoringFieldEditor(self)
        return true
    } //else if commandSelector == #selector(changeColor(_:)) {
        //textView.setTextColor(NSFontPanel.colo, range: <#T##NSRange#>)
    //}

    return false

}

当我尝试使用字体面板+检查器栏中的命令时,除了更改字体大小或颜色外,所有命令都能正常工作,是否有任何错误?或者我需要做额外的绑定/委托等工作吗?

这很奇怪,因为如果我更改了Font(自选文本)或权重,它可以正常工作(不需要编码)。

更新

我发现导致此问题的根源。我在使用模态segue显示的ViewController中显示TextView。如果我从Modal更改为Show,则大小和颜色可以正常工作。插入新行和制表符也不需要额外的命令。

为什么会出现这种情况?是否应该对segue进行任何自定义以避免这种情况?并且,为什么视图控制器演示会影响字体面板的行为?

1 个答案:

答案 0 :(得分:0)

NSFontPanel具有一个'worksWhenModal'属性,听起来好像它可能设置为'false'。

一个布尔值,指示接收方是否允许在模式窗口和面板中更改字体。 Documentation: