UITextView внутри проблемы прокрутки UIScrollView - PullRequest
7 голосов
/ 22 июля 2010

Я испытываю что-то, что считается ошибкой в ​​моей ситуации. Вероятно, это не ошибка, а особенность;).

Вот мой случай:

Я загружаю UIScrollView со своим контентом. Часть моего контента загружается асинхронно после того, как представление уже загружено. Это прекрасно работает и без проблем. Однако некоторые из этих элементов управления являются элементами управления UITextView. Как только я установил содержимое (свойство text) этих элементов управления после viewDidLoad, мой UIScrollView прокручивается вниз до последнего UITextView, который был установлен. Я хочу предотвратить это и хочу, чтобы UIScrollView сохранял верхнюю прокручиваемую позицию.

В итоге: Если я устанавливаю свойство Text в методе viewDidLoad, прокрутка не происходит. Если я устанавливаю свойство Text в UITextView после метода viewDidLoad (поскольку я загружаю данные асинхронно), UIScrollView будет прокручиваться до последнего установленного UITextView. Я хочу предотвратить эту прокрутку.

Как мне этого добиться? У меня такое ощущение, что это просто свойство, которое установлено неправильно, но я не могу его найти.

Заранее спасибо.

EDIT:

Я пытался установить для свойства scrollEnabled значение NO, прежде чем устанавливать значения, и значение YES после, но это не имело никакого эффекта. ScrollView будет по-прежнему прокручиваться, когда установлено свойство текста UITextView.

Ответы [ 3 ]

6 голосов
/ 16 августа 2010

Я исправил проблему с обходным путем:

Я установил размер содержимого представления прокрутки на что-то маленькое, например, 320 x 300 или на любую высоту рамки прокрутки, затем выполнил свою работу, а затем снова установил размер содержимого на нормальный уровень.

Это предотвращает прокрутку во время загрузки данных и включает ее, как только загрузка заканчивается.

5 голосов
/ 23 июля 2010

Это не изменит проблему прокрутки, но, возможно, сделает ее "скрытой" для пользователя:

yourTextView.text = @"Eat more bananas!";
yourScrollView.contentOffset = CGPointMake(0.0, 0.0);

Некоторые фрагменты вашего кода помогут решить проблему более конкретно.

EDIT: Или попробуйте добавить UITextViews в UIView, затем добавьте UIView в UIScrollView. Убедитесь, что contentSize UIScrollView совпадает с размером UIView.

1 голос
/ 05 декабря 2010

Это сработало и для меня: p, но мне пришлось установить высоту на значение, меньшее 300 (в моем случае я просто использовал 10).

По сути, идея состоит в том, чтобы сделать текстовое представление не частьюВ видимой области UIScrollView мы изменяем текст UITextView.

...