[iphone] 텍스트를 변경할 때마다 UITextView를 맨 위로 스크롤하려면 어떻게해야합니까?
OK, 나는 몇 가지 문제가 있어요 UITextView
. 문제는 다음과 같습니다.
나는 UITextView
. 그런 다음 사용자는 두 번 클릭하여 항목을 선택합니다. 그런 다음 UITextView
(위와 같이 프로그래밍 방식으로) 텍스트를 변경하고 UITextView
커서가있는 페이지 하단으로 스크롤합니다.
그러나 그것은 사용자가 클릭 한 곳이 아닙니다. UITextView
사용자가 클릭 한 위치에 관계없이 항상 맨 아래로 스크롤됩니다 .
그래서 여기에 내 질문이 UITextView
있습니다. 텍스트를 변경할 때마다 어떻게 강제로 맨 위로 스크롤합니까? 나는 해봤 contentOffset
하고 scrollRangeToVisible
. 둘 다 작동하지 않습니다.
모든 제안을 주시면 감사하겠습니다.
답변
UITextView*note;
[note setContentOffset:CGPointZero animated:YES];
이것은 나를 위해 그것을합니다.
Swift 버전 (Xcode 9.3에서 iOS 11이 설치된 Swift 4.1) :
note.setContentOffset(.zero, animated: true)
답변
사람이 아이폰 OS 8에서이 문제가 있다면, 그건 바로 설정을 발견 UITextView's
한 후 호출, 텍스트 속성을 scrollRangeToVisible
로 NSRange
와 location:0
, length:0
,했다. 내 텍스트보기는 편집 할 수 없었고 선택 가능과 선택 불가능을 테스트했습니다 (두 설정 모두 결과에 영향을주지 않음). 다음은 Swift의 예입니다.
myTextView.text = "Text that is long enough to scroll"
myTextView.scrollRangeToVisible(NSRange(location:0, length:0))
답변
그리고 여기 내 해결책이 있습니다 …
override func viewDidLoad() {
textView.scrollEnabled = false
textView.text = "your text"
}
override func viewDidAppear(animated: Bool) {
textView.scrollEnabled = true
}
답변
부름
scrollRangeToVisible(NSMakeRange(0, 0))
작동하지만 전화
override func viewDidAppear(animated: Bool)
답변
HTML에서 편집 할 수없는 텍스트보기로 attributeString을 사용했습니다. 콘텐츠 오프셋 설정도 나에게 효과적이지 않았습니다. 이것은 나를 위해 일했습니다 : 스크롤 활성화를 비활성화하고 텍스트를 설정 한 다음 스크롤을 다시 활성화하십시오.
[yourTextView setScrollEnabled:NO];
yourTextView.text = yourtext;
[yourTextView setScrollEnabled:YES];
답변
이러한 솔루션 중 어느 것도 저에게 효과가 없었고 솔루션을 결합하는 데 너무 많은 시간을 낭비했기 때문에 마침내 해결되었습니다.
override func viewWillAppear(animated: Bool) {
dispatch_async(dispatch_get_main_queue(), {
let desiredOffset = CGPoint(x: 0, y: -self.textView.contentInset.top)
self.textView.setContentOffset(desiredOffset, animated: false)
})
}
이 컨트롤의 기본 동작이 아니라는 것은 정말 어리석은 일입니다.
이 정보가 다른 사람에게 도움이되기를 바랍니다.
답변
질문을 이해했는지 확실하지 않지만 단순히보기를 맨 위로 스크롤하려고합니까? 만약 그렇다면
[textview scrollRectToVisible:CGRectMake(0,0,1,1) animated:YES];