在Cocoa中使用NSFontPanel

con*_*gan 6 cocoa objective-c nsfontpanel

我正在尝试使用NSFontPanel来允许用户更改应用程序范围的字体设置.它应该是这样的:用户点击一个按钮,弹出一个字体面板,他们选择一个字体和一个大小,他们的选择是持久的.

以下代码显示了面板:

- (IBAction)showFontMenu:(id)sender {
    NSFontManager *fontManager = [NSFontManager sharedFontManager];
    [fontManager setDelegate:self];

    NSFontPanel *fontPanel = [fontManager fontPanel:YES];
    [fontPanel makeKeyAndOrderFront:sender];
}
Run Code Online (Sandbox Code Playgroud)

文档似乎建议在字体更改时调用changeFont:(id)sender方法; 在我的情况下,这不会发生.

- (void)changeFont:(id)sender {
    // blah
}
Run Code Online (Sandbox Code Playgroud)

关于我可能做错的任何想法?

小智 7

包括这个:

[fontManager setTarget:self];
Run Code Online (Sandbox Code Playgroud)


kpe*_*yua 2

您定义的对象-changeFont:必须是响应者链中的第一个响应者或之上。您尚未指定定义该方法的位置,但我假设它位于不在响应程序链中的控制器对象上。