获得当前的Caret位置Cocoa

时间:2013-06-07 16:06:35

标签: macos cocoa

我正在构建一个在后台运行的桌面mac应用程序。现在,当用户按下键盘快捷键时,右上角会出现一个窗口,其中有几个选项可以插入当前插入位置。

所有这一切都运行良好,但我认为如果我可以让这个选项框出现在插入符号上方,应用会更好。如何将当前插入符号位置显示在显示窗口时可以使用的一组变量中?

enter image description here

1 个答案:

答案 0 :(得分:0)

像这样(未经测试):

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 coords中,因此您必须将它们转换为对您更有用的东西。 [textView textContainerOrigin]在这里很有用。