gpt4 book ai didi

cocoa - 为什么不更改字体 : being called from my NSFontPanel?

转载 作者:行者123 更新时间:2023-12-03 16:14:48 26 4
gpt4 key购买 nike

我正在创建一个 NSFontPanel,但选择字体不会调用 changeFont: 方法。

我在 NSWindowController 子类中定义了这些方法:

- (IBAction)showFontPanel:(id)sender {
[[NSFontPanel sharedFontPanel] makeKeyAndOrderFront:self];
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
NSFont *theFont = [NSFont fontWithName:[prefs stringForKey:iepFontName] size:[prefs floatForKey:iepFontSize]];
[[NSFontPanel sharedFontPanel] setPanelFont:theFont isMultiple:NO];

[[NSFontManager sharedFontManager] setDelegate:self];
}

- (void)changeFont:(id)sender {
NSLog(@"changeFont");
}

- (NSUInteger)validModesForFontPanel:(NSFontPanel *)fontPanel {
return NSFontPanelFaceModeMask | NSFontPanelSizeModeMask | NSFontPanelCollectionModeMask;
}

字体面板显示时选择了正确的字体和大小,并且仅在 validModesForFontPanel: 中启用了模式,但是当我选择不同的字体时,changeFont: 方法不会不会被叫到。我的理解是 changeFont: 操作消息被发送到响应者链。作为测试,我在应用程序委托(delegate)中放置了一个相同的 changeFont: 方法(该方法应该位于响应程序链中),但它也没有被调用。我是否遗漏了某个步骤?

最佳答案

我找到了答案( http://www.cocoabuilder.com/archive/cocoa/108016-nsfontpanel-act-on-it-own-accessory-view.html#108136 )。我添加了这一行:

[[NSFontManager sharedFontManager] setAction:@selector(changeDefaultFont:)];

并对我的 NSWindowController 子类中的方法名称进行了相应的更改。现在,当我在字体面板中选择不同的字体时,将调用 changeDefaultFont:

关于cocoa - 为什么不更改字体 : being called from my NSFontPanel?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6147305/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com