gpt4 book ai didi

objective-c - Control+Click 不触发 menuForEvent

转载 作者:太空狗 更新时间:2023-10-30 03:42:27 25 4
gpt4 key购买 nike

全部, 所以我有一个 NSBox 的子类,其中有一个 subview ,比如一个标签和两个 imageView。我已经覆盖了其中的 menuForEvent:。但是,当我单击 NSBox 将其选中,然后按 Control 并单击它的任何 subview 时,永远不会调用 menuForEvent:

我不明白为什么会这样。

最佳答案

NSView 处理控制键单击和右键单击的方式有所不同(正如 jfewtr 指出的那样)。如果点击落在 subview 内,则右键点击会出现上下文菜单,但控制点击则不会。

我对此感到惊讶,实际上在这里写了一篇关于它的帖子,其中包含更多详细信息:NSView control-click quirks

有几个潜在的解决方案,但覆盖/自定义整个 subview 树可能不是最佳选择。我发现最好的解决方法是在您的顶级 View (您的 NSBox 子类)中显式显示您的上下文菜单以进行控制单击:

- (void)mouseDown:(NSEvent *)theEvent
{
if (theEvent.modifierFlags & NSControlKeyMask)
{
[NSMenu popUpContextMenu:[self menuForEvent:theEvent] withEvent:theEvent forView:self];
}
}

虽然硬编码这种行为不是很好,但它避免了操纵或遍历整个 subview 树,这会导致更多有问题的副作用/错误。

关于objective-c - Control+Click 不触发 menuForEvent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7128774/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com