Полагаю, вы получаете позицию выделения с помощью NSRect insertionRect=[[self layoutManager] boundingRectForGlyphRange:[self selectedRange] inTextContainer:[self textContainer]]
, а затем создаете это всплывающее окно, используя insertionRect.origin
в качестве источника его кадра.