2010-11-01 104 views
2

我有一个NSWindowController的子类。在我的子类中,我有一个keyDown:方法。更改默认帮助键行为

当我按键盘上的帮助键时,我的keyDown:方法没有被调用,我希望它是因为我需要做一些自定义的东西。

现在,当我按下帮助键时,光标变为问号。

任何人都知道如何覆盖帮助键的默认行为?

回答

0

我已经能够找到的最佳解决方案是使用NSContextHelpModeDidActivateNotification来检测何时进入此模式。

[[NSNotificationCenter defaultCenter] addObserver:self 
             selector:@selector(helpContextModeActivated:) 
              name:NSContextHelpModeDidActivateNotification 
              object:nil]; 

当选择器被调用时,简单地调用:

[NSHelpManager setContextHelpModeActive:NO]; 

停用模式和改变光标回来。

+0

嗨。这是非常晚,是不是,特别是对于不同的= P这个代码用于禁用帮助行为,但它不会将原始keyDown:发送到关键窗口的第一响应者。我可以合成一个虚假的keyDown:并自己发送,但是我想在谨慎的方面犯错,文档会说“通常”:是否可以通过除了帮助键以外的其他方式发送此通知?例如,系统中的其他键盘快捷键或键+鼠标组合或GUI程序?谢谢! – andlabs 2014-06-07 06:30:13

+0

没关系; [此修复](http://stackoverflow.com/a/24101192/3408572),并不需要注意通知启动。不管怎么说,还是要谢谢你! – andlabs 2014-06-08 00:00:19

0

这是来自NextStep的中断保留。

我在2006年6月提交了关于此问题的a bug report。它被封为“行为正确”,指出这是一种“上下文感应帮助模式”,并注意到Apple键盘不再有帮助键。

我反对说,对于用户或开发人员没有这方面的文档,因此在任何情况下帮助模式永远不会提供实际帮助。然后它被重新分类为错误#3776278的重复。最后我检查了一下(radarweb目前正在关闭),这并没有改变。

我建议根据一般原则提交一份重复的错误报告,但不要在这方面付出太多努力,因为它会被忽略。