2010-07-22 15 views
7

Mam coś, co uważam za błąd w mojej sytuacji. Prawdopodobnie nie jest to błąd, ale funkcja;).UITextView inside UIScrollView scroll problem

Oto mój przypadek:

załadować UIScrollView z moich treści. Część zawartości jest ładowana asynchronicznie po załadowaniu widoku. Działa to świetnie i bez problemu. Niektóre z tych elementów sterujących to jednak elementy sterujące UITextView. Po ustawieniu zawartości (właściwości tekstu) tych formantów po viewDidLoad mój UIScrollView przewija w dół do ostatnio ustawionego UITextView. Chcę temu zapobiec i chcę, aby UIScrollView utrzymywał najwyższą przewijaną pozycję.

Podsumowując: Jeśli ustawię właściwość Tekst w metodzie viewDidLoad, nie ma przewijania. Jeśli ustawię właściwość Text w UITextView po metodzie viewDidLoad (ponieważ ładuję dane asynchronicznie), UIScrollView przejdzie do ostatnio ustawionego UITextView. Chcę zapobiec temu zwojem.

Jak to osiągnąć? Mam przeczucie, że to po prostu właściwość, która jest źle ustawiona, ale nie mogę tego znaleźć.

Z góry dziękuję.

EDIT:

Próbowałem ustawienie „scrollEnabled” właściwość NO przed ustawieniem wartości i TAK po, ale to nie ma żadnego wpływu. ScrollView będzie nadal przewijany po ustawieniu właściwości text UITextView.

Odpowiedz

6

I Naprawiono problem z obejścia:

ustawić rozmiar Treści przewijania do czegoś małego, jak 320 x 300 lub cokolwiek wysokość ramy Scrollview jest, to nie moje dzieło, a następnie umieścić rozmiar zawartości wraca do normy.

Zapobiega przewijaniu podczas ładowania danych i włącza je zaraz po zakończeniu ładowania.

+0

lub po prostu ustaw wymaganą zawartość PO ustawieniu wszystkich tekstów .. dzięki za pomoc w naprawieniu tego – thgc

5

To nie zmieniłoby problem przewijania, ale może zrobić to „ukryty” dla użytkownika:

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

Niektóre fragmenty kodu pomoże zmierzyć się z problemem bardziej szczegółowe.

EDIT: Lub spróbuj dodać UITextViews do UIView, a następnie dodać UIView do UIScrollView. Upewnij się, że rozmiar contentSize interfejsu UIScrollView jest taki sam jak rozmiar UIView.

+1

Dziękuję za udzielenie rozwiązania i pomyślnie go wdrożyłem. – user574089

+0

Świetne rozwiązanie, myślę, że jest to najbardziej inteligentny i uniwersalny! Mogę zagłosować, aby ten był zaakceptowaną odpowiedzią! – tong

1

To również zadziałało dla mnie: p, ale musiałem ustawić wysokość na mniej niż 300 (w moim przypadku użyłem tylko 10).

Zasadniczo chodzi o to, aby widok tekstowy nie był częścią widocznego obszaru wiersza UIScrollView, zmieniając tekst UITextView.