gpt4 book ai didi

cocoa - 为什么等效键可以与 escape 一起使用,但不能与 return 一起使用?

转载 作者:行者123 更新时间:2023-12-03 17:36:00 25 4
gpt4 key购买 nike

我的窗口上有一个按钮,在界面生成器中设置为具有与 Enter 等效的键,但是在将内容 View 从使用 IKImageBrowserView 切换到 NSCollectionView 后,该 keyEquivalent 被忽略。

根据文档中的内容: http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/EventOverview/EventArchitecture/EventArchitecture.html#//apple_ref/doc/uid/10000060i-CH3-SW10

keyEquivalent 事件被“特殊”处理,并且应该非常简单。

我正在对 NSCollectionViewItem 和项目的 View 进行子类化,但是当我重写该方法时,这些子类都没有获得performKeyEquivalent:theEvent。

默认按钮旁边有一个取消按钮,该按钮映射到 esacpe 键。 “取消”仍然有效,但默认按钮不起作用。

我如何知道回车键事件在哪里处理?

编辑:

我实际上在我用来了解 NSCollectionView 的示例应用程序中发现了同样的问题。我在窗口底部添加了一个默认按钮,发现 return 没有触发该按钮,但 Enter (fn + return) 确实触发了该按钮。

IconCollection sample app from Apple

关于此示例中窃取返回键事件的任何想法吗?

编辑:

我在这里发布了一个示例项目:https://github.com/watkyn/NSCollectionViewIssue 。为什么默认按钮不起作用?

最佳答案

ReturnEnter 是两个不同的键。 Return(在美式键盘上)位于撇号键的右侧。 Enter 是键盘右下角的键。如果您使用的笔记本电脑没有数字键盘,则可以通过按 fn+Return 来获取 Enter

<小时/>

示例代码发布后进行编辑

MyCollectionView 正在吸收返回/输入击键,而不是将其传递到响应程序链。将其添加到 MyCollectionView 的实现中,然后返回并输入将按下按钮:

- (void)keyDown:(NSEvent *)theEvent {
// NSLog(@"event: %@", theEvent);
if (36 == theEvent.keyCode || 76 == theEvent.keyCode) {
//pass return and enter up the responder chain
[[self window] keyDown:theEvent];
}
else {
//process all other keys in the default manner
[super keyDown:theEvent];
}
}

如果您需要 MyControllerView 通过 return/enter 实际执行某些操作,这可能会导致问题。在这种情况下,您可以在 [[self window] keyDown:theEvent] 之前添加 [super keyDown:theEvent]

关于cocoa - 为什么等效键可以与 escape 一起使用,但不能与 return 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7532260/

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