- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我尝试在 Cocoa 应用程序中使用字体面板,但无法调用 changeFont: 方法。
我让它在另一个应用程序中正常工作,我刚刚复制并粘贴了代码,但由于某些奇怪的原因,现在没有调用changeFont方法。代码如下:
- (IBAction)onOpenFontPanelBtnClicked:(id)sender
{
NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
NSString* theFontName = [defaults objectForKey:DefaultFontNamePrefKey];
NSFont* theFont = [NSFont fontWithName:theFontName size:12.0f];
NSFontManager* fontMgr = [NSFontManager sharedFontManager];
[fontMgr setTarget:self];
[fontMgr setAction:@selector(changeMyCustomFont:)];
NSFontPanel* panel = [fontMgr fontPanel:YES];
[panel setPanelFont:theFont isMultiple:NO];
[panel orderFront:self];
panel.enabled = YES;
NSLog(@"Font manager target: %@ (class: %@), action: %@", fontMgr.target, [fontMgr.target className], NSStringFromSelector(fontMgr.action));
}
- (void) changeMyCustomFont:(id)sender
{
NSLog(@"New font: %@", [[NSFontManager sharedFontManager] selectedFont]);
}
此代码是从模式窗口(首选项窗口)内的 View Controller 调用的,并且字体面板打开得很好。但是,尽管我手动设置了目标和操作,但我没有得到任何更改。
这个问题与响应者链有关吗?我该如何修复它?我需要手动将 View Controller 添加到响应者链中吗?我该怎么做?
提前致谢!
最佳答案
回答我自己的问题是为了帮助其他人在该功能中偶然发现这个问题。正如我所假设的,这个问题与响应者链有关。
我的层次结构如下:NSWindow(由 NSWindowController 管理)-> contentView -> childview(由 NSViewController 管理)
我发现响应者链在窗口 Controller 中结束。因此,字体面板无法将changeFont:消息发送到我实现它的 View Controller 。
通过在窗口 Controller 中添加这行代码,我可以解决该问题:
self.nextResponder = self.theViewCtrl;
我仍然不明白的是为什么当我手动配置目标/操作时它不起作用。不管怎样,它现在对我有用。
关于objective-c - NSFontPanel changeFont 未调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27036767/
我需要处理 NSFontPanel 已关闭的情况。当这种情况发生时,是否有任何方法被调用?谢谢回复。 最佳答案 NSFontPanel 是 NSPanel 的子类,而 NSPanel 是 NSWind
我有一个应用程序,用户需要修改样式(字体、大小、粗体、背景色和前景色……)如何在 FontPanel 中加载初始样式并在用户验证后获取新属性? 我尝试了很多不同的方法,但没有成功。 谢谢 最佳答案 使
根据文档,您应该将 设置为 NSFontManager 的共享实例。委托(delegate)应该实现一个方法 - (BOOL) fontManager:(id)sender willIncludeFo
我正在为我的应用程序创建一个功能,我想在其中使用 NSFontPanel。我不想在我的应用程序中出现“字体”菜单。 单击菜单项时打开和关闭字体面板的操作如下 - (IBAction) showOver
当我的应用中的 NSTextField 获得焦点时,我在接收来自 NSFontPanel 的任何消息时遇到了奇怪的问题。 即使是 NSTextField 的子类也没有从字体面板接收到任何内容。似乎面板
我正在为我的酷应用程序设置首选项窗口,其中显示一些文本。在首选项中,我设置了一个打开 NSFontPanel 的按钮。我的应用程序存储用户喜欢的文本颜色和字体,并始终以这些设置打开,以便用户永远不必看
我正在创建一个 NSFontPanel,但选择字体不会调用 changeFont: 方法。 我在 NSWindowController 子类中定义了这些方法: - (IBAction)showFont
我想打开 NSFontPanel,并使用最初选择的字体(在以下示例中为 Helevtica)。我的意思是,当字体面板显示时,将选择集合和系列值。这是我的代码: NSFontManager * font
Cocoas NSFontPanel 有哪些自定义选项? iWork 页面中可访问的 NSFontPanel 顶部有“文本下划线”、“文本删除线”和“文档颜色”控件。我们不希望这些出现在我们的 NSF
我尝试在 Cocoa 应用程序中使用字体面板,但无法调用 changeFont: 方法。 我让它在另一个应用程序中正常工作,我刚刚复制并粘贴了代码,但由于某些奇怪的原因,现在没有调用changeFon
我正在尝试使用 NSFontPanel 来允许用户更改应用程序范围的字体设置。它应该像这样工作:用户单击一个按钮,弹出一个字体面板,他们选择字体和大小,然后他们的选择被保留。 以下代码显示面板: -
我想让用户能够更改基于 View 的 NSTableView 的字体。我正在使用 Cocoa 绑定(bind)和核心数据。在我的测试代码中,我确实有一个 changeFont: 方法,当我按下与字体相
我是一名优秀的程序员,十分优秀!