문제

UitextView에 더 많은 텍스트를 작성할 때 전체 안에 들어갈 수있는 것보다 더 많은 텍스트를 작성할 때 텍스트가 위로 스크롤되며 커서는 종종 뷰의 결론 위에 하나 또는 두 줄을 배치합니다. 내 응용 프로그램이 텍스트보기의 전체 높이를 잘 활용하기를 원하기 때문에 이것은 약간 실망 스럽습니다.

기본적으로 내가 원하는 것은 UitextView를 가장 낮은 부분으로 작성하도록 구성하고 스크롤링에만 사용하지 않는 것입니다.

비슷한 질문을 보았습니다 여기, 여기 그리고 여기. 그러나 나는 아직 적절한 해결책을 보지 못했습니다.

감사

도움이 되었습니까?

해결책

약간 다른 구현 (스크롤을 비활성화하고 싶습니다)이지만 UitextView에서 커서 점프를 중지해야했습니다. 이를 위해 UitextView 하위 클래스에서 Null ScrollRectTovisible을 구현했습니다. 이와 같이:

- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated
{
// do nothing. This fixes the cursor jumping above the field defect.
}

다른 팁

우수한 솔루션은 서브 클래스 UitextView 추가 라인에 있습니다

-(void) setContentOffset:(CGPoint)contentOffset {
    [self setContentInset:UIEdgeInsetsZero];
    [super setContentOffset:contentOffset];
}

일이야!

이것을 사용하십시오

NSRange myRange=NSMakeRange(outPutTextView.text.length, 0);

[outPutTextView scrollRangeToVisible:myRange];

내가 올바르게 이해하면 사용할 수 있습니다

[textView setScrollEnabled:NO];

스크롤을 비활성화합니다. 커서가 더 낮은 마진에 도달했을 때 입력하지 않아야하는 것은 어떻습니까? 아마도 좋은 솔루션은 아니지만 임계 값을 추가 할 수 있습니다 (최대 문자의 최대 문자 [textView text]) 그리고 반환되지 않습니다

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

uitextView if의 대표 방법 [[textView text] length] > maxCharacters.

속성 'ContentOffset'도 사용할 수있는 것 같습니다 ...

SetFrame의 마지막 줄이 있습니다.

  1. 당신은 할 수 있습니다 세트 프레임 약 라인 높이에
  2. 편집 할 때 - (bool)textView:shouldChangeTextInRange:replacementText:,사용 scrollRangeToVisible:, 논쟁은입니다 selectedRange
  3. 편집을 종료하면 세트 프레임 원래 크기로
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top