首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >NSFontManager setTarget:不适用于模式窗口

NSFontManager setTarget:不适用于模式窗口
EN

Stack Overflow用户
提问于 2011-11-14 20:07:25
回答 1查看 748关注 0票数 0

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

代码语言:javascript
复制
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];

它工作得很好。字体管理器调用控制器中的changeFont:方法。

但是如果我改写下面的代码:

代码语言:javascript
复制
[[NSFontManager sharedFontManager] setTarget:self];
[[NSFontManager sharedFontManager] setAction:@selector(qwe:)];
[[NSFontManager sharedFontManager] orderFrontFontPanel:self];

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

原因是窗口是模式的(当我在没有模式会话的情况下显示窗口时,一切正常)。问题是为什么目标操作变量不适用于模式窗口?

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-01 05:34:35

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

真正起作用的是:(1)设置委托,而不是目标,(2)将方法命名为changeFont,(3)不设置操作:

代码语言:javascript
复制
@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];
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8121328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档