Получение события двойного щелчка - PullRequest
5 голосов
/ 20 августа 2011

Я искал документы Apple, и единственная функция, которую я смог найти, касающаяся двойного щелчка, просто возвращала приемлемое время между щелчками, чтобы его считали двойным щелчком.

Может кто-нибудь показать мне пример события двойного щелчка?

Ответы [ 3 ]

14 голосов
/ 20 августа 2011

Переопределите метод NSResponder -mouseUp: и проверьте предоставленное событие clickCount.Если clickCount == 2, то вы смотрите на двойной щелчок.Если это 1, то один клик.0, затем они ждали достаточно долго между мышкой вниз и мышкой вверх, чтобы система решила, что это не щелчок, а только отдельные события вниз и вверх.

- (void)mouseUp:(NSEvent *)event
{
    NSInteger clickCount = [event clickCount];
    if (2 == clickCount) [self handleDoubleClickEvent:event];
}

Это предполагает, что объект, обрабатывающий щелчок, является частью респондентацепь.Если нет, вам придется получить ваши события другим способом, например, создать подклассы NSApplication или NSWindow и переопределить -sendEvent:, чтобы перехватить соответствующее событие, прежде чем оно пройдет дальше.

2 голосов
/ 20 августа 2011

Также обратите внимание, что некоторые NSControl имеют setDoubleAction:, поэтому селектор, зарегистрированный с помощью setDoubleAction:, отправляется на цель.См. Официальную документацию

2 голосов
/ 20 августа 2011

См. Метод NSEvent -clickCount.

...