NSView(内容视图)作为firstResponder

时间:2011-07-09 08:06:58

标签: objective-c nsview first-responder

我有一个我在偏好笔尖中使用的内容视图。 我使用一种方法来更改我的应用程序中的NSTextView的字体。

必须将此内容视图设置为firstResponder才能从我的changeTextFont:方法获取消息,但由于它不是窗口,因此它没有firstResponder。因此,它根本不会更改文本字体...有没有人有解决方法?

谢谢一群人。

1 个答案:

答案 0 :(得分:3)

我可以让示例项目工作而不指定[self window]作为第一响应者。我做的是:

  1. (void)changeTextFont:(id)sender中,我替换了声明:

    [[self window] makeFirstResponder:[self window]];
    

    行:

    [[NSFontManager sharedFontManager] setAction:@selector(changeMyFont:)]; 
    [[NSFontManager sharedFontManager] setTarget:self];    //-- this seems to be not mandatory, but I mention it because your case could be different
    
  2. 我将changeFont:重命名为changeMyFont:

    - (void)changeMyFont:(id)sender
    {
    
  3. 通过这些更改,可以在示例内容视图中正确更新字体。

    我不知道它是否适合您,因为最终您尝试在不同的上下文中使用此代码,但我希望它会。我建议你先尝试修改示例项目,这样你就可以对我的解决方案充满信心,然后将它移到你的项目中,检查它是否也适用于那里。