2013-06-07 3 views
1

백그라운드에서 실행되는 데스크톱 mac app을 구축 중입니다. 현재 사용자가 키보드 단축키를 누르면 오른쪽 상단에 현재 캐럿 위치에 삽입 할 항목의 몇 가지 옵션이있는 창이 나타납니다.현재 캐럿 위치 얻기 코코아

이 모든 기능이 제대로 작동하지만이 옵션 상자를 캐럿 위에 표시 할 수 있다면 응용 프로그램이 더 좋을 것이라고 생각합니다. 현재 캐럿 위치를 창을 표시 할 때 사용할 수있는 변수 집합으로 어떻게 가져 옵니까? 이 (안된) 같은

enter image description here

+0

나는 아무것도 시도하지 않았습니다. 어디서부터 시작해야할지 모르겠다 – centree

+0

솔루션을 찾았습니까? – Dmitry

답변

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의 좌표입니다. 여기서는 [textView textContainerOrigin]이 유용합니다.

+0

내 앱이 백그라운드에 있고 텍스트 편집과 같은 다른 앱이 포 그라운드에 있더라도이 기능이 작동합니까? – centree

+0

아, 다른 사람의 앱에 대해 캐럿 위치를 원하십니까? 아니요, 이것은 자신의 앱에있는 텍스트 뷰에 대해서만 가능합니다. 나는 다른 애플 리케이션을 위해 그것을하는 방법을 모른다. –

+0

누군가가 키보드 단축키를 사용할 때 위의 창을 표시하려고합니다. 어쨌든 고마워. – centree