更新:我现在覆盖从子类的NSView设置如下图所示第一响应者的NSView使用keyUp方法,但我仍然没有看到有证据表明它被称为

@implementation svsView

- (BOOL)acceptsFirstResponder {
    return YES;
}

- (void)keyUp:(NSEvent *)event {
  //--do key up stuff--
  NSLog(@"key up'd!");
}

@end

- ORIGINAL POST-- 我是新来的可可和对象 - ,我试图做一个(无效)使用keyUp:从我的控制器类的实现(其本身是类型NSController的)之内。我不知道这是否是把它,虽然正确的地方。我有一系列如按钮的每个组为一个唯一的等效键(IB按钮属性),并且每个调用我(IBAction为)keyInput方法,该方法然后转到每个密钥到另一对象的身份。这将运行得很好,但我也希望跟踪时,每个键被释放。

- ORIGINAL [坏例 -

@implementation svsController

//init
//IBActions

- (IBAction)keyInput:(id)sender {
  //--do key down stuff--
}

- (void)keyUp:(NSEvent *)event {
  //--do key up stuff--
}

@end

一旦失败,我也尝试了使用keyUp作为IBAction为(而不是无效),象用户定义keyInput是,和迷上它到在界面生成器上相应的按钮,但然后当键被使用keyUp仅称为下来,而不是释放时。 (这我有点想通会发生。)

原谅我noobery,但我应该把这个方法在其他类或做不同的东西吗?无论它是,虽然,我需要它能够访问由控制器类所拥有的对象。

感谢您可以具有任何的洞察力。

有帮助吗?

解决方案 2

哇!我想我已经把它钉。我只需要我的实例子类具有的NSView / NSWindow参考IB类。实际上并没有在界面中创建它的一个实例。在过去的几个小时下来马斯克拉普! SANS我学到了沿途的两件事。 ;)

其他提示

NSResponder类亚类(如一个NSView的一个自定义的子类)处理的按键事件。他们甚至处理更多的抽象级别的事件,如“左/右移动”,“插入新行”等。然后,他们可以将消息发送到控制器作出相应的反应。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top