2013-02-10 2 views
0

텍스트 시작 및 끝 위치를 제어해야하는 UITextView가 있습니다.UITextView에서 텍스트 너비를 제한하는 방법이 있습니까?

이것은 UITextView의 배경 이미지로 버블을 사용하고 버블 이미지 내부에 텍스트를 표시해야하기 때문에 발생합니다.

self.contentOffset = (CGPoint){.x = -10, .y = -10}; 

을하지만 어디 텍스트 끝을 제어하는 ​​방법을 단서가 없다 : 텍스트를 사용하여 시작 위치를

지금까지 내가 통제 할 수 있었다. 현재 기본적으로 모든 UITextView 너비를 사용합니다.

답변

0

은 제한이

UITextView 전화 사용자 유형에 새로운 문자 또는 기존 문자를 삭제 때마다이 방법 // 무엇이든 #DEFINE의 경사 방향을 지정할 수도있다; text_length (25)을 정의합니다. 방법을 사용 replacementText하지 replacementString

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text 
{ 
    NSUInteger newLength = (textView.text.length - range.length) + text.length; 
    if(newLength <= TEXT_LENGTH) 
    { 
     return YES; 
    } else { 
     NSUInteger mySpace = TEXT_LENGTH - (textView.text.length - range.length); 
     textView.text = [[[textView.text substringToIndex:range.location] 
              stringByAppendingString:[text substringToIndex: mySpace]] 
             stringByAppendingString:[textView.text substringFromIndex:(range.location + range.length)]]; 
     return NO; 
    } 
} 

, replacementString 및 replacementText 사이의 서로 다른 너무 조심.

1

텍스트가 늘어남에 따라 풍선의 높이가 커지나요? 또는 거품이 1 줄로 제한됩니까? 어느 쪽이든, 나는이 문제를 다루기 위해 다른 접근법을 사용해야한다고 생각한다.

NSString 인스턴스에서 -sizeWithFont:constainedToSize:lineBreakMode:을 사용하여 텍스트의 크기를 알아냅니다. 크기가 사용자가 허용하는 값보다 큰 경우 입력 허용 (목표 인 경우)을 중지하거나 버블 높이를 높이고 다음 줄에서 텍스트를 계속 허용합니다.

일반적으로 위의 제안에 따라 UITextViewDelegate 메서드 -textView:shouldChangeTextInRange:replacementText:을 구현하면 텍스트 입력시 이러한 재 계산을 수행하게됩니다.

- 또는 -

는 그냥 텍스트 뷰의 크기를 제한하고 또한 당신의 목적을 위해 충분한 수있는 lineBreakMode & numberOfLines 설정.

관련 문제