gpt4 book ai didi

objective-c - 文本DidEnd编辑: - how to filter "Return" key?

转载 作者:行者123 更新时间:2023-12-03 16:25:51 24 4
gpt4 key购买 nike

好的,这是我的情况:

  • 我正在使用 NSTextField
  • 我正在观察 NSTextDidEndEditingNotification 通知

这是最终的方法:

- (void)handleConsoleInput:(NSNotification*)not

每当用户(至少从我注意到的情况来看)时,都会触发此通知:

  • 按“返回”
  • 按“tab”
  • NSTextField 中点击

但是,我(显然)希望将其限制为“返回”键。

我该怎么做?我已经测试了发送的 NSNotification 对象的内容,并且没有有关触发 textDidEndEditing: 通知的关键代码或事件的信息。

有什么想法吗?

<小时/>

编辑:

刚刚注意到:

  • 当用户点击 NSTextField 之外时,[[not userInfo] valueForKey:@"NSTextMovement"] 变为 0,这意味着此案例可以被过滤。
  • 但是,如何区分“tab”和“return”,它们都返回 NSTextMovement>0

最佳答案

如果您确实认为订阅通知是解决此问题的最有效方法,那么您会拥有更多权力,但我认为您可以更轻松地子类化 NSTextField 并覆盖相关事件方法。但是,这并不重要,这是我认为它应该是什么样子的快速实现:

- (void)handleConsoleInput:(NSNotification*)notification {
NSUInteger textMove = [notification.userInfo[@"NSTextMovement"] unsignedIntegerValue];
if (textMove != NSReturnTextMovement) {
[self.window makeFirstResponder:notification.object];
}
}

NSText 的文档中枚举了结束事件的类型.

关于objective-c - 文本DidEnd编辑: - how to filter "Return" key?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15183998/

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