我正在尝试让NSOutlineView接受次要点击,但似乎无法弄明白。我尝试在触控板上将两个手指的次要咔嗒声改为右上角和左上角,但我仍然没有在mousedown事件的大纲视图中得到任何响应。有谁可以帮助我?
更新:
如果我使用它,则会记录次要点击,但它仍然没有显示在rightMouseDown:函数中。
[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) {
NSLog(@"%@", event);
return (NSEvent *)event;
}];
更新:
我仍然不知道如何解决这个问题。我的NSCollectionView响应rightMouseUp但不响应rightMouseDown。怎么样?
TNX
答案 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];
}