2012-05-23 1 views
1

코드를 편집 할 때 Xcode는 컨텍스트 메뉴를 표시 할 수있는 드롭 다운 단추와 같은 텍스트 컨트롤을 표시 할 수 있습니다. 비슷한 기능이 가능한 텍스트를 처리하는 다른 OS X 앱을 보았습니다. 첨부 된 샘플을 참조하십시오.NSTextView에 컨트롤 추가 및 문자 (범위)로 바인딩

enter image description here

나는이 효과가 NSTextAttachmentCell를 사용하여 구한다 가정 -이이 구현하는 적절한 방법인지 확실하지 않다 있지만.

내 자신의 응용 프로그램에 대해서도이 기술을 사용하고 싶습니다.

나는 다음과 같은 질문이 있습니다

  • NSTextAttachmentCell 이러한 기능을 구현하는 올바른 방법인가를? 그렇지 않다면 무엇이 될 것입니까?

  • NSTextView의 위치가 동적이며 레이아웃 동작을 따르도록 특정 샘플 범위의 컨트롤을 특정 텍스트 범위에 첨부하려면 어떻게해야합니까?

나는 몇 가지 힌트를 제공하지만, 특정 텍스트 범위에 첨부 파일을 포함하지 않는 this을 발견했다.

답변

1

비록 NSTextAttachmentCell이 작동하지만 단점이 있습니다. 셀은 내가 원한 것이 아닌 텍스트의 글리프가됩니다. 그것은 텍스트의 레이아웃을 왜곡하고 선택 가능합니다. Xcode의 동작처럼 텍스트 위에 그려지는 셀을 원했습니다.

도전 과제는 Mouse Moved 이벤트에서 포인트를 NSTextView 내부의 특정 문자열 위치로 변환하는 방법을 찾는 것이 었습니다.

좀 더 파고 나면 LayoutManagerDemo이라고하는 Apple 데모 응용 프로그램에서 작은 보석을 발견했습니다. 이 데모에서는 NSTextView의 사용자 정의 하위 클래스를 보여 주며, 마우스가 뷰를 변경하는 동안 개별 문자, 단어 및 선을 강조 표시 할 수 있습니다. 거기에서 버튼을 퇴색시키고 몇 가지 옵션이있는 팝업 메뉴를 표시하는 것이 매우 쉬웠습니다.