NSTextView
のキャレットの位置は通常 [aTextView selectedRange].location
で取得できる。キャレットの位置は幅0の選択範囲と同義だからである。
しかし、 テキストを選択した状態で NSTextView
の上で何かをドラッグしたとき表示されるキャレットの位置はこの方法では取得できない。この場合、 NSDraggingInfo
からマウスカーソルの位置を取得し、キャレットの位置に変換すればよい:
- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender {
NSPoint dropPoint = [self convertPoint:[sender draggingLocation] fromView:nil];
NSUInteger caretLocation = [self characterIndexForInsertionAtPoint:dropPoint];
}
参考:nstextview - Set the cursor to a pointing hand over a text view - Stack Overflow