Действие вызывается дважды (мышь вверх / вниз) при щелчке по цели в Cocoa / target-c - PullRequest
1 голос
/ 14 марта 2011

У меня есть NSDatePicker (цель) и datePickerAction (действие)

- (IBAction)datePickerAction:(id)sender
{

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

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

}

Хорошо работает, когда я щелкаю дату в объекте NSDatePicker, вызывается метод (действие), проблема в том, что метод вызывается дважды - мышкой вниз / вверх.

Можно ли вызвать метод только один раз (вверх или вниз)?

EDIT

У меня есть только метод, который нужно выбрать.

enter image description here

А это инспектор соединений. enter image description here

Ответы [ 2 ]

4 голосов
/ 15 марта 2011

К сожалению, я думаю, что вы не можете настроить NSDatePicker (или NSDatePickerCell, если быть точным) таким образом в Интерфейсном Разработчике, но вместо этого придется делать это программно.

Вот обходной путь, который хорошо работаетдля меня:

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

Обратите внимание, что вы не можете использовать NSLeftMouseDownMask здесь!(Ну, конечно, вы можете ... но это не поможет.)

0 голосов
/ 14 марта 2011

Вы обычно хотите добавить цель и действие для определенного события. Когда вы делаете соединение, используя IB, посмотрите на Инспектора Соединений. Существует список управляющих событий, для которых вы можете установить пару цель-действие. Выберите событие и перетащите на метод действия.

...