Xcode 如何设置NSFontPanel的默认值?

Xcode 如何设置NSFontPanel的默认值?,xcode,cocoa,interface-builder,macruby,nsfontpanel,Xcode,Cocoa,Interface Builder,Macruby,Nsfontpanel,我正在为我的酷应用程序设置“首选项”窗口,其中显示一些文本。在“首选项”中,我设置了一个按钮,打开一个NSFontPanel。我的应用程序存储用户喜欢的文本颜色和字体,并始终使用这些设置打开,这样用户就不必看到以他们不喜欢的颜色或字体显示的文本 问题是,虽然我的应用程序能够记住这些首选项,但NSFontPanel有问题。当我第一次打开字体面板时,所有字段的默认值都被重置。在摆弄它们、关闭面板然后重新打开面板后,将保留正确的值。只有当我第一次打开面板时,问题才会出现 我不明白为什么会这样 当我的应

我正在为我的酷应用程序设置“首选项”窗口,其中显示一些文本。在“首选项”中,我设置了一个按钮,打开一个
NSFontPanel
。我的应用程序存储用户喜欢的文本颜色和字体,并始终使用这些设置打开,这样用户就不必看到以他们不喜欢的颜色或字体显示的文本

问题是,虽然我的应用程序能够记住这些首选项,但
NSFontPanel
有问题。当我第一次打开字体面板时,所有字段的默认值都被重置。在摆弄它们、关闭面板然后重新打开面板后,将保留正确的值。只有当我第一次打开面板时,问题才会出现

我不明白为什么会这样

当我的应用程序启动时,我会小心地设置面板的字体和颜色,正如您从以下代码片段中看到的:

def show_entry_font_menu(sender)
  font_manager = NSFontManager.sharedFontManager    
  color_panel = NSColorPanel.sharedColorPanel

  font_manager.setDelegate self
  color_panel.setDelegate self

  font_manager.setSelectedFont(preferences.entry_font, isMultiple:false)

  font_panel = font_manager.fontPanel(true)
  font_panel.makeKeyAndOrderFront(sender)
  attributes = preferences.entry_font_attributes
  color = preferences.entry_font_color

  font_manager.setSelectedAttributes(attributes, isMultiple:false)
  color_panel.setColor(color) if preferences.entry_font_color

  self.did_open_font_panel = true
end

初始化sharedFontPanel有一个奇怪之处。如果在第一次创建字体之前设置字体,效果很好,但设置属性却不行

您需要做的是首先生成keyAnderfront,然后设置属性。一旦第一次创建面板,它将正确反映设置的选定属性

  font_panel.makeKeyAndOrderFront(sender)
  font_manager.setSelectedAttributes(attributes, isMultiple:false)

哈这是我永远也想不到的事情!