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

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

0 голосов
/ 01 апреля 2011

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

Может кто-нибудь дать мнепример того, как это делается.Я понимаю, что Цель 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 ]

7 голосов
/ 01 апреля 2011

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

1 голос
/ 01 апреля 2011
    [self keyDown:theEvent];    

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

...