我正在尝试让NSOutlineView接受二次点击,但似乎找不到答案。我试着改变二次点击,从两个手指,在触控板的右角和左角,但我仍然没有得到任何响应在我的大纲视图的鼠标按下事件。有谁可以帮我?
更新:
如果我使用这个方法,第二次点击会被记录下来,但它仍然不会出现在rightMouseDown:函数中。
[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) {
NSLog(@"%@", event);
return (NSEvent *)event;
}];更新:
我还是不知道怎么解决这个问题。我的NSCollectionView响应rightMouseUp,但不响应rightMouseDown。怎么会这样?
tnx
发布于 2013-11-19 11:59:37
苹果的文档特别提到了在响应器链(上下文菜单)的上层处理rightMouseDown,而不是向下传递到一个子类中。文档中提到了覆盖acceptsFirstResponder,但我也没能让它正常工作。
因此,虽然我不能触发rightMouseDown事件,但我能够修改您的代码来伪造它。我让它调用我的rightMouseDown事件处理程序,而不是记录事件。
[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) {
[self rightMouseDown:event];
return (NSEvent *)event;
}];希望有人能够比这个更好地解决这个问题,但至少这是一个开始。
发布于 2013-11-23 02:52:49
在重写mouseDown时遇到类似的问题:我需要从mouseDown调用rightMouseDown:以便在两种情况下都有相同的行为。这在小牛中不再起作用。
相反,当您需要这样做时,似乎更好的做法是将事件类型更改为鼠标右键单击。也许这会对你有所帮助:
- (void)mouseDown:(NSEvent *)event;
{
[event setValue:@(NSRightMouseDown) forKey:@"type"];
[self rightMouseDown:event];
}https://stackoverflow.com/questions/15849934
复制相似问题