2015-03-14 2 views
0

Я добавляю контекстные меню к OSX-приложению, которое я разрабатываю, и успешно создал меню для представления таблицы. Однако у меня возникают проблемы с добавлением контекстного меню в NSDatePicker. Я подключил выход «menu» к NSMenu, но щелчок правой кнопкой мыши по NSDatePicker не вызывает меню.Может ли NSDatePicker иметь контекстное меню?

Я проверил свойство меню в списке выбора даты и, похоже, правильно настроен.

Есть ли неотъемлемая проблема при попытке создать контекстное меню для NSDatePicker? Если да, то есть способ получить эту работу (за исключением переопределения NSDatePicker)? Я также предпочел бы, чтобы у вас не было дополнительной кнопки для отображения меню, если это вообще возможно - щелчок правой кнопкой мыши по выбору даты - это, очевидно, интуитивный способ, которым это должно работать.

ответ

0

На OS X 10.9.5, class-dump показывает, что NSDatePicker переопределяет -rightMouseDown: (а также -rightMouseDragged: и -rightMouseUp:). Я предполагаю, что он не вызывает супер, и поэтому (случайно?) Блокирует контекстное меню.

Во-первых, делает ли перетаскивание правой кнопкой в ​​сборщике даты что-то уникальное? Я не мог это увидеть, но кто знает. Это может зависеть от datePickerStyle и/или datePickerMode.

Кроме того, я не вижу переопределения -mouseDown:. Итак, держу пари, что нажатие кнопки «Управление» вызывает контекстное меню.

Я рекомендую вам принять это ограничение. Однако, если вы действительно хотите заставить проблему, вам, вероятно, потребуется подкласс NSDatePicker и переопределить методы -rightMouse.... Для -rightMouseDown: вы можете позвонить NSMenu* menu = [self menuForEvent:theEvent] и, если это возвращает меню, вызовите [NSMenu popUpContextMenu:menu withEvent:theEvent forView:self]. В противном случае ничего не делайте (то есть не переходите к super).

Для других двух методов вы, вероятно, просто не должны ничего делать, чтобы предотвратить смещение методов суперкласса, увидев события правого перетаскивания и правой мыши, когда он не получил событие правой мыши.

Смежные вопросы