首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >再次单击nsresponder,右键单击不起作用

再次单击nsresponder,右键单击不起作用
EN

Stack Overflow用户
提问于 2013-04-06 18:47:30
回答 2查看 369关注 0票数 2

我正在尝试让NSOutlineView接受二次点击,但似乎找不到答案。我试着改变二次点击,从两个手指,在触控板的右角和左角,但我仍然没有得到任何响应在我的大纲视图的鼠标按下事件。有谁可以帮我?

更新:

如果我使用这个方法,第二次点击会被记录下来,但它仍然不会出现在rightMouseDown:函数中。

代码语言:javascript
复制
[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) {
    NSLog(@"%@", event);
    return (NSEvent *)event;

}];

更新:

我还是不知道怎么解决这个问题。我的NSCollectionView响应rightMouseUp,但不响应rightMouseDown。怎么会这样?

tnx

EN

回答 2

Stack Overflow用户

发布于 2013-11-19 11:59:37

苹果的文档特别提到了在响应器链(上下文菜单)的上层处理rightMouseDown,而不是向下传递到一个子类中。文档中提到了覆盖acceptsFirstResponder,但我也没能让它正常工作。

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

代码语言:javascript
复制
[NSEvent addLocalMonitorForEventsMatchingMask:NSRightMouseDownMask handler:^(NSEvent* event) {
        [self rightMouseDown:event];
        return (NSEvent *)event;
    }];

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

票数 0
EN

Stack Overflow用户

发布于 2013-11-23 02:52:49

在重写mouseDown时遇到类似的问题:我需要从mouseDown调用rightMouseDown:以便在两种情况下都有相同的行为。这在小牛中不再起作用。

相反,当您需要这样做时,似乎更好的做法是将事件类型更改为鼠标右键单击。也许这会对你有所帮助:

代码语言:javascript
复制
- (void)mouseDown:(NSEvent *)event;
{
    [event setValue:@(NSRightMouseDown) forKey:@"type"];
    [self rightMouseDown:event];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15849934

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档