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