Я разрабатываю простое приложение для редактирования текста для iPad, используя UITextView. У меня всегда были некоторые проблемы с UIScrollView и UITextView. Я думаю, я просто ожидал слишком многого от этих двух.
Когда я устанавливаю myTextView.text на другой экземпляр NSString, прокрутка происходит автоматически. Я мог бы предотвратить эту прокрутку, установив
myTextView.scrollEnabled = NO;
myTextView.text = newText;
myTextView.scrollEnabled = YES;
Однако, если я изменил свойство selectedRange myTextView, прокрутка произошла.
В частности, если диапазон selectedRange имел место для текста на текущем экране, прокрутка не происходила.
Например, если я выделю весь текст, коснувшись свойства «Выбрать все», прокрутка не произойдет. Но если я выделю весь текст, установив selectedRange в NSMakeRange (0, [myTextView.text length]), то произойдет прокрутка до END (последняя позиция каретки).
Чтобы решить проблемы,
1) Я сохранил исходное смещение содержимого myTextView.
CGPoint originalOffset = myTextView.contentOffset;
// change myTextView.selectedRange here
myTextView.selectedRange = originalOffset
Но ничего не произошло.
2) Я вызвал вышеуказанные коды через несколько секунд, используя NSTimer, и прокрутка правильно вернулась в исходное положение (смещение). Однако сначала произошла прокрутка до конца, а затем до самого верха.
Есть ли способ полностью предотвратить прокрутку UITextView на мгновение?