2

Я пытаюсь получить NSOutlineView, чтобы принимать вторичные клики, но не может показаться, что он это понял. Я попытался изменить вторичные клики с двух пальцев, в правый и левый углы на трекпаде, и все же я не получаю никакого ответа в своем контурном представлении на событиях mousedown. Может кто-нибудь мне помочь?вторичный клик nsresponder, правый клик не работает

UPDATE:

Если я использую этот вторичный щелчок регистрируется, но он все еще не показывает вверх в rightMouseDown: функцию.

[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) { 
    NSLog(@"%@", event); 
    return (NSEvent *)event; 

}]; 

UPDATE:

Я до сих пор не знаю, как решить эту проблему. Мой NSCollectionView отвечает на rightMouseUp, но не на rightMouseDown. Как так?

Тпх

ответ

0

документация яблока конкретно говорит о rightMouseDown быть обработаны в выше в цепочке ответчика (для контекстного меню), и в частности, не передаются в свой подкласс. В документации говорится об переопределении acceptsFirstResponder, но я не смог заставить это работать.

Так что, пока я не мог получить событие rightMouseDown, я смог изменить ваш код, чтобы подделать его. Вместо того, чтобы регистрировать событие, вместо этого я вызываю его обработчик события rightMouseDown.

[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) { 
     [self rightMouseDown:event]; 
     return (NSEvent *)event; 
    }]; 

Будем надеяться, что кто-то сможет пролить больше света на вопрос, чем это, но, по крайней мере, это начало.

0

Схожие проблемы при переопределении mouseDown: Мне нужно было вызвать rightMouseDown: от mouseDown, чтобы иметь одинаковое поведение в обоих случаях. Это перестало работать в Маверикс.

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

- (void)mouseDown:(NSEvent *)event; 
{ 
    [event setValue:@(NSRightMouseDown) forKey:@"type"]; 
    [self rightMouseDown:event]; 
} 
Смежные вопросы