我有模式窗口。在它的控制器中,我这样做:
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];它工作得很好。字体管理器调用控制器中的changeFont:方法。
但是如果我改写下面的代码:
[[NSFontManager sharedFontManager] setTarget:self];
[[NSFontManager sharedFontManager] setAction:@selector(qwe:)];
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];它不起作用。当我在字体面板中选择字体时,它没有调用qwe: method。
原因是窗口是模式的(当我在没有模式会话的情况下显示窗口时,一切正常)。问题是为什么目标操作变量不适用于模式窗口?
谢谢你的帮助。
发布于 2012-03-01 05:34:35
我也看到了这个。设置目标和操作不会导致调用操作方法。
真正起作用的是:(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];
}https://stackoverflow.com/questions/8121328
复制相似问题