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

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

- (IBAction)datePickerAction:(id)sender
{

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

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

}

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

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

РЕДАКТИРОВАТЬ

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

И это инспектор связи.

2 ответа

Решение

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

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

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

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

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

Другие вопросы по тегам