NSFontManager setTarget:不适用于模态窗口

Llo*_*d18 0 xcode cocoa objective-c

我有模态窗口.在它的控制器中我这样做:

[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
Run Code Online (Sandbox Code Playgroud)

它工作正常.字体管理器changeFont:在我的控制器中调用方法

但是,如果我写这个代码:

[[NSFontManager sharedFontManager] setTarget:self];
[[NSFontManager sharedFontManager] setAction:@selector(qwe:)];
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
Run Code Online (Sandbox Code Playgroud)

它不起作用.当我在字体面板中选择字体时,它不会调用qwe:method.

原因是窗口是模态的(当我显示没有模态会话的窗口时,一切正常).问题是为什么目标 - 动作变体不适用于模态窗口?

感谢帮助.

Mar*_*ind 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];
}
Run Code Online (Sandbox Code Playgroud)