Как сейчас настроено, у меня есть два UITextViews внутри UIScrollView. Дело в том, что сами UITextViews не прокручиваются, они просто увеличиваются (их размер содержимого) по мере добавления большего количества текста. UIScrollView обрабатывает всю прокрутку вверх и вниз в представлении независимо от того, сколько в нем текста (подумайте, как в Mail.app, где представление темы находится над представлением сообщения и т. д.). Тем не менее, я столкнулся с проблемой сейчас. Когда я программно добавляю текст в свой UITextView (в этом коде bodyText), UIScrollView по какой-то причине автоматически прокручивается вниз.
Чтобы добавить текст, я просто делаю:
NSRange selectedRange = [bodyText selectedRange];
NSString *selectedText = [bodyText.text substringWithRange:selectedRange];
bodyText.text = [bodyText.text stringByReplacingCharactersInRange:selectedRange withString:[NSString stringWithFormat:@"<b>%@</b>", selectedText]];
Так, например, если бы у меня было 2000 пикселей по вертикали текста, и в настоящее время я прокручивал до позиции 400, а затем добавлял текст где-то там, UIScrollView затем опускался бы до 2000.
Я пытался остановить это с помощью подкласса UISCrollView и переопределения -setContentOffset, но тогда это замораживает всю прокрутку.
Мой вопрос: почему он прокручивается до конца? Текст добавляется, когда пользователь нажимает кнопку где-то еще на экране, и прокрутка не имеет ничего общего с перетаскиванием пальца или чем-то еще.