Можете ли вы обнаружить запрос ctrl-click (контекстное меню) в событии mouseDown? - PullRequest
5 голосов
/ 23 октября 2008

В моей кроссплатформенной архитектуре я хотел бы воздействовать на щелчок контекстного меню (щелчок правой кнопкой мыши) во время события щелчка мыши. В Какао вы можете обнаружить, что пользователь либо щелкнул по Ctrl, либо дважды нажал на сенсорной панели (эквивалент щелчка правой кнопкой мыши) во время события mouseDown? Мне известно о menuForEvent NSView, но я не хочу обрабатывать его здесь.

Ответы [ 3 ]

15 голосов
/ 26 октября 2008

В общем, -rightMouseDown: должен вызываться автоматически, но я встречал ситуации, когда это не так - они могут быть исправлены в Leopard.

Но сейчас, в -mouseDown: я проверяю, нажата ли клавиша управления, используя этот код:

- (void)mouseDown:(NSEvent *)event;
{
    if (event.modifierFlags & NSControlKeyMask)
        return [self rightMouseDown:event];

...
}

-Wil

13 голосов
/ 23 октября 2008

Если вы используете AppKit и хотите обнаружить щелчок правой кнопкой мыши в своем представлении, вы должны переопределить -[NSResponder rightMouseDown:].

1 голос
/ 21 апреля 2016

Swift версия:

override func mouseDown(theEvent: NSEvent) {
    if theEvent.modifierFlags.contains(.ControlKeyMask) {
        return rightMouseDown(theEvent)
    }

    super.mouseDown(theEvent)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...