ОБНОВЛЕНО: теперь я переопределяю метод NSUKUUp из подкласса NSView, установленного для первого ответчика, как показано ниже, но я все еще не вижу доказательств того, что он вызывается.keyUp event hear ?: Переопределенный метод NSView
@implementation svsView
- (BOOL)acceptsFirstResponder {
return YES;
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
NSLog(@"key up'd!");
}
@end
--ORIGINAL POST-- Я новичок в какао и Obj-C, и я пытаюсь сделать (Недействительными) KeyUp: от в рамках реализации моего класса контроллера (который сам по себе имеет тип NSController). Я не уверен, что это подходящее место, чтобы выразить это. У меня есть серия похожих кнопок, каждая из которых настроена на уникальный эквивалент ключа (атрибут кнопки IB), и каждый вызывает мой метод ввода ключа (IBAction), который затем передает идентификатор каждой клавиши на другой объект. Это работает очень хорошо, но я также хочу отслеживать, когда будет выпущен каждый ключ.
--ORIGINAL [плохо] EXAMPLE--
@implementation svsController
//init
//IBActions
- (IBAction)keyInput:(id)sender {
//--do key down stuff--
}
- (void)keyUp:(NSEvent *)event {
//--do key up stuff--
}
@end
При неудаче, я также попробовал KeyUp как IBAction (вместо пустоты), как и определенный пользователем keyInput есть, и подключил его к соответствующие кнопки в Interface Builder, но затем keyUp вызывается только тогда, когда клавиши были опущены, а не когда они были выпущены. (Который я вроде понял бы.)
Простите, мой ноберий, но должен ли я помещать этот метод в другой класс или делать что-то по-другому? Однако, где бы это ни было, мне нужно иметь доступ к объектам, принадлежащим классу контроллера.
Спасибо за понимание, которое у вас может быть.
Хорошо, я попробовал другой подход. Я создал подкласс svsView: NSView (с соответствующими .mm и .h) и попытался переопределить keyUp: (метод NSResponder (суперкласс NSView)). Вставляя простой вызов NSLog и ничего не видя из него, похоже, что метод даже не вызывается. Я пропустил что-то элементарное здесь? Thanks –
IBAction предназначен для методов действий, а не для методов событий. –
Спасибо, Питер. Я прикрепил IBAction и вернулся к (void) его в подклассе NSView и даже перегрузил acceptsFirstResponder, чтобы установить класс для первого ответчика, но я все еще не вижу его. Какие-либо предложения? –