2012-12-14 5 views
1

텍스트가 전체보기를 채울 수 있도록 자동으로 글꼴 크기를 조정하는 사용자 정의 NSTextView 구현이 있습니다.NSTextView textDidChange/didChangeText가 바인딩을 위해 호출되지 않았습니다.

글꼴 크기 조정 방법을 호출하기 위해 didChangeText을 덮어 씁니다. 사용자가 텍스트를 편집 할 때 유용하지만 didChangeText (및 대리자 메서드 textDidChange:)은 텍스트보기 내용이 바인딩을 통해 설정된 경우 호출되지 않습니다.

사용자가 변경할 때뿐만 아니라 텍스트가 설정되거나 변경 될 때마다 글꼴 조정 코드가 실행되어야합니다.

NSTextView의 텍스트에 대한 모든 변경 사항을 바인딩을 통해 검색하는 방법은 무엇입니까?

참고 : 글꼴 크기를 늘리는 것 이외의 방법으로 텍스트를 전체 텍스트보기로 채우는 더 좋은 방법이 있다면 알려주십시오.

+0

를 추가 했습니까? 그리고 NSScrollView가 아닌 ​​NSTextView의 delegate 속성을 대리자를받을 객체와 연결합니다. - (void) textDidChange : (NSNotification *) 알림 {NSLog (@ "textDidChange called"); } –

+0

예, 대리자를 사용하여 시도했지만 바인딩을 통해보기가 업데이트 될 때 textDidChange :가 호출되지 않습니다. – Mark

답변

0

텍스트보기의 "attributedString"에 바인딩 된 NSAttributedString에 글꼴 속성을 설정하는 것이 좋습니다. textDidChange: 대리자 메서드에서 올바른 글꼴 특성을 사용하여 NSAttributedString을 다시 만들면됩니다.

+0

나는 비슷한 것을하고있다. 내 문제는 텍스트보기의 내용을 처음 설정할 때 내 글꼴 조정 코드가 호출되지 않는다는 것입니다. – Mark

+0

바르게하면 바인딩 된 속성 (즉, 접근 자)이 항상 올바른 글꼴 (지정한 속성)을 가진 NSAttributedString 속성을 반환합니다. – user1885297

+0

바운드 속성은 NSAttributedString이 아닌 간단한 NSString입니다. 그럼에도 불구하고 맞춤 글꼴을 설정하고 싶습니다. – Mark