gpt4 book ai didi

objective-c - 与 Interface Builder 等价的 NSTextfield 键

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

在过去的两天里,我一直在搜索和阅读很多本来应该非常简单的内容。很明显事实并非如此:我正在尝试做到这一点:

Key Equivalent field in IB

仅此而已。我知道快捷方式记录器已经很老了,而且我一直在使用 MASShortcut 的演示。 MASShortcut 非常棒,但是看似简单的事情需要大量代码。

我还搜索了很多 Apple 示例代码(希望他们能在 Interface Builder 之外的其他地方实现这一点,但到目前为止还没有运气)。

这给我留下了以下问题:

-有任何文档可以澄清其中的一些内容吗?或者还有其他比 MASShortcut 更简单的解决方案吗?

- 我一直在尝试自己复制类似 IB 控件的东西,但我仍然坚持将按下的键“转换”为 NSTextField 中的字符(或者它是 IB 中的自定义 NSView?)。 Apple 是否提供了一种简单的方法来做到这一点?因为用 sendEvent 捕获所有内容并将其与所有键的列表进行比较似乎需要大量工作,我想知道苹果程序员是如何在上面看到的控件中做到这一点的。如果这是唯一的解决方案,那么在使用它时我应该关注不同的键盘布局吗?

-其他应用程序如何实现此功能,以便它在此处可见: System Preferences > Keyboard

正如您所看到的 TextWranglers 出现在此处,当我在应用程序中调用“[NSEvent addGlobalMonitorForEventsMatchingMask:]”时,这会自动发生吗?

这是很多问题,我只是希望你们中的一个人能给我指出正确的方向。

提前致谢,弗兰斯

最佳答案

上周我自己也在忙着从按键中获取字符,我偶然发现了两个由于某种原因我以前没有见过的函数: UCKeyTranslate()在 CoreServices 中和明显相关的 CGEventKeyboardGetUnicodeString() (看起来像前者的包装)在 ApplicationServices 中。

看起来这些函数——或者至少是通过代码——苹果自己的文本系统正在使用这些函数将按键翻译成 Unicode 字符串以显示为文本。

NSEventmodifierFlags 进行简单检查就足以将修饰键状态转换为像 ⌥⇧⌘ 这样的字符串:

NSUInteger flags = [theEvent modifierFlags];
NSString * modString = [NSString stringWithFormat:@"%@%@%@%@",
(flags & NSControlKeyMask) ? @"^" : @"",
(flags & NSAlternateKeyMask) ? @"⌥" : @"",
(flags & NSShiftKeyMask) ? @"⇧" : @"",
(flags & NSCommandKeyMask) ? @"⌘" : @""];

您可能还想查看 Allan Odgaard 的博客文章 "Deciphering an NSEvent"关于他为决定按下哪些键而开发的启发式方法。

关于objective-c - 与 Interface Builder 等价的 NSTextfield 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14790725/

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