OK, I'm having some problem with the UITextView
. Here's the issue:
I add some text to a UITextView
. The user then double clicks to select something.
I then change the text in the UITextView
(programatically as above) and the UITextView
scrolls to the bottom of the page where there is a cursor.
However, that is NOT where the user clicked. It ALWAYS scrolls to the bottom of the UITextView
regardless of where the user clicked.
So here's my question: How do I force the UITextView
to scroll to the top every time I change the text? I've tried contentOffset
and scrollRangeToVisible
. Neither work.
Any suggestions would be appreciated.
UITextView*note;
[note setContentOffset:CGPointZero animated:YES];
This does it for me.
Swift version (Swift 4.1 with iOS 11 on Xcode 9.3):
note.setContentOffset(.zero, animated: true)
If anyone has this problem in iOS 8, I found that just setting the UITextView's
text property, then calling scrollRangeToVisible
with an NSRange
with location:0
, length:0
, worked. My text view was not editable, and I tested both selectable and not selectable (neither setting affected the result). Here's a Swift example:
myTextView.text = "Text that is long enough to scroll"
myTextView.scrollRangeToVisible(NSRange(location:0, length:0))
And here is my solution...
override func viewDidLoad() {
textView.scrollEnabled = false
textView.text = "your text"
}
override func viewDidAppear(animated: Bool) {
textView.scrollEnabled = true
}
Calling
scrollRangeToVisible(NSMakeRange(0, 0))
works but call it in
override func viewDidAppear(animated: Bool)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With