NSDatePicker 不会处理或转发由 Return 或 Enter 键触发的键事件。
解决方案是将NSDatePicker子类化以在 keyDown 中获得所需的行为:
#import "datePickerClass.h"
@implementation datePickerClass
- (void)keyDown:(NSEvent *)theEvent{
unsigned short n = [theEvent keyCode];
if (n == 36 || n == 76) {
NSLog(@"Return key or Enter key");
// do your action
//
} else {
[super keyDown:theEvent];// normal behavior
}
}
@end
就是这样。
编辑:你也可以使用NSCarriageReturnCharacter和NSEnterCharacter
NSString* const s = [theEvent charactersIgnoringModifiers];
unichar const key = [s characterAtIndex:0];
if (key == NSCarriageReturnCharacter || key == NSEnterCharacter) {