2013-02-15 54 views
0

我是可可开发的noob,我试图做一个非常基本的程序,显示任何按下的键在标签中的值,然后清除键未按下时。我到处搜索,我发现了类似的线程,并在神秘的开发者库中苦苦挣扎,但我似乎无法让他们工作。任何帮助都会很棒。记得我很新。如何返回xcode中按键的值?

我真正需要的是知道什么代码将返回程序运行时按下的键的值。我大概可以从那里弄清楚。

感谢

编辑 - 确定。我已经阅读了响应链上的苹果文档几次,并且我认为我了解了这个概念。但是,我不明白为什么我的代码无法正常工作。这是我的。我认为我可以把它放在App Delegate的实现之下?我只有一个简单的默认应用程序。 NSApplication应该将keyDown事件传递给应用程序委托,因为它是第一个响应者,它应该读取密钥并记录它,对吗?正如你所看到的,我可能不完全理解事件是如何工作的。任何援助将是非常棒的。

- (BOOL)acceptsFirstResponder { 
    return YES; 
} 

- (void)keyDown:(NSEvent *)theEvent 
{ 

    NSString *key = [theEvent characters]; 


    NSLog(@"keyDown [%@]", [theEvent characters]); 
} 
+0

第一步就是要很好地理解响应者链。 https://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW11 – Monolo 2013-02-15 18:58:58

+0

另请参阅[如何处理箭头Cocoa App中的关键事件?](http://stackoverflow.com/q/6000133),这会让你开始。 – 2013-02-15 19:00:48

回答

1

无论对象是第一个响应者需要实现-(void)keyDown:(NSEvent *)theEvent-(void)keyUp:(NSEvent *)theEvent。您可以通过NSString-(NSString *)character获取事件中的角色。如果您的应用只有一个窗口,并将其控制器设置为实现上述方法,则只要您的窗口中没有其他消耗事件的其他应用,就应该可以工作。