我有模态窗口。在它的控制器中我这样做:
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
它工作正常。字体管理器在我的控制器中调用changeFont:
方法。
但如果我改为编写此代码:
[[NSFontManager sharedFontManager] setTarget:self];
[[NSFontManager sharedFontManager] setAction:@selector(qwe:)];
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
它不起作用。当我在字体面板中选择字体时,它不会调用qwe:method。
原因是窗口是模态的(当我显示没有模态会话的窗口时,一切正常)。问题是为什么目标 - 动作变体不适用于模态窗口?
感谢您的帮助。
答案 0 :(得分:5)
我也看到了这一点。设置目标和操作不会导致调用操作方法。
这是什么工作:(1)设置委托,而不是目标,(2)命名方法changeFont,(3)不设置动作:
@property (retain) NSFont *font;
...
- (void)changeFont:(id)sender
{
self.font = [sender convertFont:self.font];
}
- (IBAction)actionSetFont:(id)sender
{
NSFontManager *fontManager = [NSFontManager sharedFontManager];
[fontManager setDelegate:self];
NSFontPanel *fp = [NSFontPanel sharedFontPanel];
[fontManager setSelectedFont:self.font isMultiple:NO];
[fp makeKeyAndOrderFront:self];
}