更新:我现在从 NSView 子类覆盖 NSView keyUp 方法,设置为如下所示的第一响应者,但我仍然没有看到它被调用的证据。
@implementation svsView
- (BOOL)acceptsFirstResponder {
return YES;
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
NSLog(@"key up'd!");
}
@end
--ORIGINAL POST-- 我是 Cocoa 和 Obj-C 的新手,我正在尝试从我的控制器类(它本身是 NSController 类型)的实现中执行 (void)keyUp:。不过,我不确定这是否是放置它的正确位置。我有一系列类似的按钮,每个按钮都设置为一个唯一的等效键(IB 按钮属性),每个都调用我的 (IBAction)keyInput 方法,然后将每个键的标识传递给另一个对象。这运行得很好,但我也想跟踪每个键的释放时间。
--原始[坏]示例--
@implementation svsController
//init
//IBActions
- (IBAction)keyInput:(id)sender {
//--do key down stuff--
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
}
@end
失败后,我还尝试将 keyUp 作为 IBAction(而不是 void),就像用户定义的 keyInput 一样,并将其连接到 Interface Builder 中的相应按钮,但随后 keyUp 仅在按键按下而不是时被调用释放时。(我想会发生这种情况。)
请原谅我的菜鸟,但我应该把这个方法放在另一个班级还是做一些不同的事情?不过,无论它在哪里,我都需要它能够访问控制器类拥有的对象。
感谢您提供的任何见解。