2

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

更新:

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

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

}];

更新:

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

tnx

4

2 回答 2

0

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

相反,当您需要发生这种情况时,最好将事件类型更改为右键单击。也许这会帮助你:

- (void)mouseDown:(NSEvent *)event;
{
    [event setValue:@(NSRightMouseDown) forKey:@"type"];
    [self rightMouseDown:event];
}
于 2013-11-22T18:52:49.287 回答
0

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

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

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

希望有人能够比这更好地阐明这个问题,但至少这是一个开始。

于 2013-11-19T03:59:36.610 回答