【问题标题】:NSFontManager setTarget: doesn't work for modal windowNSFontManager setTarget:不适用于模态窗口
【发布时间】:2011-12-28 14:39:41
【问题描述】:

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

[[NSFontManager sharedFontManager] orderFrontFontPanel:self];

而且效果很好。字体管理器在我的控制器中调用changeFont: 方法。

但如果我改写这段代码:

[[NSFontManager sharedFontManager] setTarget:self];
[[NSFontManager sharedFontManager] setAction:@selector(qwe:)];
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];

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

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

感谢您的帮助。

【问题讨论】:

    标签: objective-c xcode cocoa


    【解决方案1】:

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

    起作用的是:(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];
    }
    

    【讨论】:

      猜你喜欢
      • 2022-11-21
      • 1970-01-01
      • 2020-01-05
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 1970-01-01
      相关资源
      最近更新 更多