Keydown в объективе-C

[ОБНОВЛЕНО ПОСЛЕ ПЕРВОГО ПОБЕДИТЕЛЯ] Я попытался найти способ использовать и реализовать параметр keyDown в Objective C. Но когда я пробую его, он всегда терпит неудачу...

Может ли кто-нибудь дать мне пример того, как это делается. Я понимаю Objective C хорошо, и полное объяснение не требуется.

Я удалил метод в -(void) keyDown потому что это не сработало.

Это мой код сейчас:

#import <Cocoa/Cocoa.h>

@interface ViewController : NSView {
    IBOutlet id pressLabel;
}

@end



#import "ViewController.h"

@implementation ViewController

-(BOOL) acceptsFirstResponder
{
    return YES;
}

-(BOOL) becomeFirstResponder
{
    return YES;
}

-(BOOL) resignFirstResponder
{
    return YES;
}

-(void)keyDown:(NSEvent *)theEvent
{
    NSString *theUpArrow = [NSString stringWithFormat:@"%c",NSUpArrowFunctionKey];
    if( [[theEvent characters] isEqualToString:theUpArrow]){
        [pressLabel setStringValue:@"Pressed"];
    } else {
        [super keyDown:theEvent];   
    }
}

@end

2 ответа

keyDown: является методом NSResponder, обычно реализуемым в представлениях. Этот класс называется Controller, что предполагает, что он не является представлением, и, следовательно, не будет получать события нажатия клавиши. Вы, вероятно, хотите вместо этого представить это в виде.

    [self keyDown:theEvent];    

Это не решит вашу проблему, но я думаю, что для строки выше, вы хотите использовать super и не self, Если вы используете self он снова будет вызывать один и тот же метод и будет снова и снова вызывать один и тот же метод, в конечном итоге приводя к сбою приложения, когда в стеке больше нет места.

Другие вопросы по тегам