Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c NSFontManager设置目标:不';模态窗口不能工作_Objective C_Xcode_Cocoa - Fatal编程技术网

Objective c NSFontManager设置目标:不';模态窗口不能工作

Objective c NSFontManager设置目标:不';模态窗口不能工作,objective-c,xcode,cocoa,Objective C,Xcode,Cocoa,我有一扇窗户。在其控制器中,我执行以下操作: [[NSFontManager sharedFontManager] orderFrontFontPanel:self]; 而且效果很好。字体管理器在我的控制器中调用changeFont:方法 但是如果我写这段代码: [[NSFontManager sharedFontManager] setTarget:self]; [[NSFontManager sharedFontManager] setAction:@selector(qwe:)]; [[

我有一扇窗户。在其控制器中,我执行以下操作:

[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
而且效果很好。字体管理器在我的控制器中调用
changeFont:
方法

但是如果我写这段代码:

[[NSFontManager sharedFontManager] setTarget:self];
[[NSFontManager sharedFontManager] setAction:@selector(qwe:)];
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];
它不起作用。当我在字体面板中选择字体时,它不会调用qwe:method

原因是窗口是模态的(当我显示没有模态会话的窗口时,所有工作正常)。问题是为什么目标动作变量不适用于模态窗口


谢谢你的帮助

我也看到了。设置目标和操作不会导致调用操作方法

所做的工作如下:(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];
}

我也看到了。设置目标和操作不会导致调用操作方法

所做的工作如下:(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];
}