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)
哈这是我永远也想不到的事情!