2014-06-08 4 views
1

UITextView의 레이아웃 매니저에 대한 액세스 권한을 얻을 수있는 방법 텍스트 편집으로 클라이언트는 사용자 정의 스타일을 추가 할 수 있도록, 그 NSLayoutManager 노출이되어 (http://www.objc.io/issue-5/getting-to-know-textkit.html 예를 들어,이 문서는 구문 강조와 UITextView를 구현) 비슷한 사용자 지정을 허용하도록 UITextField에 대한 기본 NSLayoutManager를 가져 오는 방법?는, UITextField

답변

-1

textView.layoutManager으로 레이아웃 관리자에 액세스 할 수 있습니다. 당신은 모든 객체를 직접 작성하여 자신의 레이아웃 매니저를 할당 할 수

NSTextStorage* textStorage = [[NSTextStorage alloc] initWithString:string]; 

// you could create a subclass of NSLayoutManager here 
NSLayoutManager *layoutManager = [[NSLayoutManager alloc] init]; 
[textStorage addLayoutManager:layoutManager]; 

self.textContainer = [[NSTextContainer alloc] initWithSize:self.view.bounds.size]; 
[layoutManager addTextContainer:self.textContainer]; 

UITextView* textView = [[UITextView alloc] initWithFrame:self.view.bounds textContainer:self.textContainer]; 
[self.view addSubview:textView]; 

을 당신은 내가 걸릴 접근하지 구문 강조를 할하려는 그러나 경우. 나는 사용자가 변경 사항을 감지하는 UITextView을 서브 클래스 및

그것은 아마 내가 아이폰 OS로 OS X에서 쓴이 클래스 포트에 매우 어렵지 않을 것

[self.storage addAttributes:range:]를 통해 그 시점에서 강조 자신의 구문을 추가 제안 : https://github.com/abhibeckert/Dux/blob/master/Dux/DuxSyntaxHighlighter.m - 그것은 적용 다양한 언어에 대한 성능과 지원이 뛰어난 NSTextStorage로 구문 강조 표시.

+1

. 문제는 UITextField의 layoutManager에 액세스 할 수 있는지 여부입니다. – ldoogy

0

Apple은 다양한 이유로 UILabel의 layoutManager를 노출하지 않습니다. 그 이유는 레이블 텍스트를 편집하지 않고 범위가 변경 될 때와 같이 드물게 레이아웃하기 때문에 여러 레이블간에 실제로 공유된다는 것입니다.

하지만 당신은 내가 여기에 보여처럼 UILabel는, 스택 TextKit 사용자 정의를 사용할 수 있습니다 : 질문이 아니었다 https://www.cocoanetics.com/2015/03/customizing-uilabel-hyperlinks/