2010-07-22 5 views
7

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

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

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

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

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

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

EDIT:

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

ответ

6

я Исправлена ​​проблема с обходным:

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

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

+0

или вы просто установите требуемое содержимое ПОСЛЕ установки всех текстов. Спасибо, что помогли мне исправить это – thgc

5

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

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

Некоторые фрагменты кода поможет столкнуться с проблемой более конкретно.

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

+1

Благодарим за предоставление решения, и я успешно его реализовал. – user574089

+0

Отличное решение, я думаю, это самый умный и универсальный! Я могу проголосовать за это, чтобы быть принятым ответом! – tong

1

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

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

Смежные вопросы