我正在构建一个在后台运行的桌面 Mac 应用程序。现在,当用户按下键盘快捷键时,右上角会出现一个窗口,其中包含在当前插入符号位置插入内容的几个选项。
所有这一切都很好,但我认为如果我能让这个选项框出现在插入符号上方,应用程序会更好。如何在显示窗口时将当前插入符号位置转换为我可以使用的一组变量?
像这样的东西(未经测试):
NSRange selection = [textView selectedRange];
NSLayoutManager* layoutManager = [textView layoutManager];
NSTextContainer* textContainer = [textView textContainer];
NSRange glyphRange = [layoutManager glyphRageForCharacterRange:selection actualCharacterRange:nil];
NSRect boundingRect = [layoutManager boundingRectForGlyphRange:glyphRange inTextContainer:textContainer];
boundingRect 位于 textContainer 坐标中,因此您必须将它们转换为对您更有用的东西。 [textView textContainerOrigin]
在这里会有用。