Mon*_*olo 4 macos cocoa nsdatepicker
场景:
用户正在NSDatePicker
以文本形式输入一个没有步进器的日期(在OS X上),当他们点击键盘返回时,我想要一条消息发送到控制器.
在一个NSTextField
,我只是在Interface Builder中挂起动作,或者从代码中设置它,当用户点击进入时,动作消息被发送到目标.
日期选择器允许设置操作消息和目标,但我无法触发操作.当我在日期选择器中按Enter键时,不会调用操作消息.
我做错了什么,还是有一个我必须使用的解决方法?如果需要的话,我不会对任何涉及的类的子类化产生不利影响.
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
Run Code Online (Sandbox Code Playgroud)
而已.
编辑:您也可以使用NSCarriageReturnCharacter和NSEnterCharacter
NSString* const s = [theEvent charactersIgnoringModifiers];
unichar const key = [s characterAtIndex:0];
if (key == NSCarriageReturnCharacter || key == NSEnterCharacter) {
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
718 次 |
最近记录: |