辅助单击NSRESPONDER,右键单击不起作用



我试图让NSOutlineView接受二次点击,但似乎无法弄清楚。我试过将二次点击从两根手指改为触控板的左右角,但在我的大纲视图中,鼠标按下事件仍然没有任何响应。有人能帮我吗?

更新:

如果我使用这个,第二次点击被记录,但它仍然没有显示在rightMouseDown:函数。

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

我仍然不知道如何解决这个问题。我的NSCollectionView响应rightMouseUp而不是rightMouseDown。怎么会?

tnx

apple文档特别提到了rightMouseDown在responder chain(对于上下文菜单)中被处理,并且它不会被传递到一个人的子类中。文档中谈到了重写acceptsFirstResponder,但我也没能让它工作。

所以,虽然我不能得到rightMouseDown事件触发,我能够修改你的代码来伪造它。而不是记录事件,我让它调用我的rightMouseDown事件处理程序来代替。

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

希望有人能对这个问题提出比这更好的看法,但至少这是一个开始。

在重写mouseDown时遇到类似的问题:我需要调用rightMouseDown: from mouseDown以在两种情况下具有相同的行为。

相反,似乎最好将事件类型更改为右键单击时,你需要这发生。也许这对你有帮助:

- (void)mouseDown:(NSEvent *)event;
{
    [event setValue:@(NSRightMouseDown) forKey:@"type"];
    [self rightMouseDown:event];
}

最新更新