Действие вызывается дважды (мышь вверх / вниз) при щелчке по цели в 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, посмотрите на Инспектора Соединений. Существует список управляющих событий, для которых вы можете установить пару цель-действие. Выберите событие и перетащите на метод действия.