ОБНОВЛЕНО: теперь я переопределяю метод NSView keyUp из подкласса NSView, установленного для первого респондента, как показано ниже, но я все еще не вижу доказательств того, что он вызывается.
@implementation svsView
- (BOOL)acceptsFirstResponder {
return YES;
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
NSLog(@"key up'd!");
}
@end
--ORIGINAL POST - Я новичок в Cocoa и Obj-C, и я пытаюсь выполнить (void) keyUp: из реализации моего класса контроллера (который сам имеет тип NSController). Я не уверен, что это подходящее место для его размещения. У меня есть ряд одинаковых кнопок, каждая из которых имеет уникальный ключевой эквивалент (атрибут кнопки 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 вызывался только тогда, когда ключи были выключены, а не когда выпустят. (Что, как я предполагал, должно было случиться.)
Простите за глупость, но следует ли мне поместить этот метод в другой класс или сделать что-то по-другому? Однако где бы он ни был, мне нужен доступ к объектам, принадлежащим классу контроллера.
Спасибо за любую информацию, которая у вас есть.