辅助点击nsresponder,右键单击不起作用

时间:2013-04-06 10:47:30

标签: objective-c macos mouseevent mouseclick-event nsresponder

我正在尝试让NSOutlineView接受次要点击,但似乎无法弄明白。我尝试在触控板上将两个手指的次要咔嗒声改为右上角和左上角,但我仍然没有在mousedown事件的大纲视图中得到任何响应。有谁可以帮助我?

更新:

如果我使用它,则会记录次要点击,但它仍然没有显示在rightMouseDown:函数中。

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

}];

更新:

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

TNX

2 个答案:

答案 0 :(得分:0)

苹果文档专门讨论了在响应者链中更高层处理的rightMouseDown(用于上下文菜单),并且它没有特别传递到一个子类中。该文档讨论了覆盖acceptFirstResponder,但我无法让它工作。

因此,当我无法触发rightMouseDown事件时,我能够修改您的代码以伪造它。我没有记录事件,而是调用了我的rightMouseDown事件处理程序。

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

希望有人能够在这个问题上发挥更好的作用,但至少这是一个开始。

答案 1 :(得分:0)

在覆盖mouseDown时遇到类似的问题:我需要调用rightMouseDown:from mouseDown在两种情况下都具有相同的行为。这停止了​​在小牛队工作。

相反,当您需要这样做时,最好将事件类型更改为右侧单击。也许这会对你有所帮助:

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