我正在为我的酷应用设置偏好设置窗口,该窗口会显示一些文字。在偏好设置中,我设置了一个打开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
答案 0 :(得分:4)
初始化sharedFontPanel有点奇怪。如果您在第一次创建字体之前设置字体,那可以正常工作,但设置属性不会。
您首先要做的是makeKeyAndOrderFront,然后设置属性。一旦这样创建了面板,它就会第一次正确地反映setSelectedAttributes。
font_panel.makeKeyAndOrderFront(sender)
font_manager.setSelectedAttributes(attributes, isMultiple:false)