1

我有一个 NSDatePicker(目标)和 datePickerAction(动作)

- (IBAction)datePickerAction:(id)sender
{

    if( [[[NSApplication sharedApplication] currentEvent] modifierFlags] & 
       NSShiftKeyMask )
        NSLog(@"shift pressed %@", [datePicker dateValue]);

    else
        NSLog(@"hello %@", [datePicker dateValue]);

}

当我单击 NSDatePicker 对象中的日期时,它工作得很好,方法(动作)被调用,问题是该方法被调用了两次 - 鼠标向下/向上。

我可以只调用一次(向上或向下)的方法吗?

编辑

我只有要选择的方法。

在此处输入图像描述

这是连接检查器。 在此处输入图像描述

4

2 回答 2

4

不幸的是,我认为您不能在 Interface Builder 中以这种方式设置NSDatePicker(或者NSDatePickerCell,具体而言),而是必须以编程方式进行。

这是一个对我来说效果很好的解决方法:

- (void)awakeFromNib
{
    // Assuming @property (assign) IBOutlet NSDatePickerCell *pickerCell;
    [self.pickerCell sendActionOn:NSLeftMouseDown]; // or NSLeftMouseUp or what have you...
}

请注意,您不能在此处使用NSLeftMouseDownMask!(好吧,因为你可以......但这无济于事。)

于 2011-03-14T21:47:51.930 回答
-1

您通常希望为特定事件添加目标和操作。当您使用 IB 建立连接时,请查看 Connections Inspector。有一个控制事件列表,您可以为其设置目标-操作对。选择一个事件并拖动到一个操作方法。

于 2011-03-14T19:15:12.453 回答