gpt4 book ai didi

objective-c - validModesForFontPanel 从未调用过

转载 作者:行者123 更新时间:2023-12-03 16:18:55 25 4
gpt4 key购买 nike

我有一个使用 NSFontPanel 的应用程序。我像这样打开字体面板:

NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager orderFrontFontPanel:self];
[fontManager setDelegate:self];
[fontManager setTarget:self];
[fontManager setAction:@selector(changeFont:)];

然后我有一个 -(void)changeFont:(id)sender 方法,它对面板中的字体更改使用react。这一切都运作良好。

现在,我想禁用一些字体选项,因此我实现了 NSFontPanelValidation 协议(protocol)的 validModesForFontPanel 方法:

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

但是,该方法永远不会被调用。在文档中,它说:“此消息沿着响应者链发送到实现该方法的第一个响应者。理想情况下,该对象应该是第一个发现的也实现了changeFont的响应者:。

我确实在此响应程序中实现了 changeFont,因此除非有其他我不知道的响应程序,否则我不知道此消息会发生什么。

有人有什么建议吗?

最佳答案

您没有为小组指定任何响应者,而只是为经理指定。
这应该可以做到:

NSFontPanel* fontPanel = [fontManager fontPanel:YES];
[fontPanel setDelegate:self];
[fontPanel makeKeyAndOrderFront:sender];

关于objective-c - validModesForFontPanel 从未调用过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9359418/

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