UIScrollView прокручивается вниз при изменении текста UITextField - PullRequest
1 голос
/ 19 февраля 2011

Как это настроено сейчас, у меня есть два 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, но это затем останавливает всю прокрутку.

Мой вопрос: почему он вообще прокручивается до самого дна?Текст добавляется, когда пользователь нажимает кнопку в другом месте экрана, и прокрутка не имеет никакого отношения к перетаскиванию пальцев или чему-либо еще.

1 Ответ

0 голосов
/ 19 мая 2011

В Руководстве по программированию Scroll View вы получаете:

Создание видимого прямоугольника

Также можно прокрутить прямоугольную область так, чтобы она была видимой,Это особенно полезно, когда приложению необходимо отобразить элемент управления, который в данный момент находится за пределами видимой области, в видимом представлении.Метод scrollRectToVisible: animated: прокручивает указанный прямоугольник так, чтобы он был виден только в представлении прокрутки.Если анимированным параметром является ДА, прямоугольник прокручивается в поле зрения с постоянной скоростью.Как и в случае setContentOffset: animated :, если анимация отключена, делегату отправляется одно сообщение scrollViewDidScroll :.Если анимация включена, делегату отправляется серия scrollViewDidScroll: сообщения в процессе анимации.В случае scrollRectToVisible: animated: свойства отслеживания и перетаскивания представления прокрутки также имеют значение NO.

Если анимация включена для scrollRectToVisible: animated :, делегат получает сообщение scrollViewDidEndScrollingAnimation:, обеспечивающее уведомление о том, что представление прокрутки имеетприбыл в указанное место, и анимация завершена.

Так что, возможно, вы сможете использовать эту функцию для блокировки видимости в вашем UITextView.

...