2010-07-22 2 views
7

Sto sperimentando qualcosa di considerato un bug nella mia situazione. Probabilmente questo non è un bug ma una funzionalità;).UITextView all'interno UIScrollView scroll problem

Ecco il mio caso:

carico un UIScrollView con il mio contenuto. Una parte del mio contenuto viene caricata in asincrono dopo che la vista è già stata caricata. Funziona alla grande e senza problemi. Alcuni di questi controlli sono tuttavia controlli UITextView. Una volta impostato il contenuto (proprietà text) di questi controlli dopo viewDidLoad il mio UIScrollView scorre fino all'ultimo UITextView impostato. Voglio evitare questo e voglio che UIScrollView mantenga la sua posizione di scorrimento superiore.

In breve: Se si imposta la proprietà Text nel metodo viewDidLoad non si verifica alcuno scorrimento. Se imposto la proprietà Text su UITextView dopo il metodo viewDidLoad (perché carico i dati asincroni), UIScrollView scorrerà fino all'ultimo UITextView impostato. Voglio impedire questo rotolo.

Come ottengo questo? Ho la sensazione che questa sia solo una proprietà errata ma non riesco a trovarla.

Grazie in anticipo.

EDIT:

Ho provato l'impostazione del "scrollEnabled" proprietà a NO prima di impostare i valori e su YES dopo, ma questo non ha avuto alcun effetto. ScrollView continuerà a scorrere quando viene impostata la proprietà text di UITextView.

risposta

6

Ho risolto la questione con un work-around:

ho impostato la dimensione dei contenuti vista di scorrimento a qualcosa di piccolo, come 320 x 300 o qualunque sia l'altezza del telaio ScrollView viene, poi ha fatto il mio lavoro, poi mettere la dimensione del contenuto torna alla normalità.

Ciò impedisce lo scorrimento mentre i dati vengono caricati e lo abilita non appena il caricamento è terminato.

+0

oppure hai appena impostato il contenuto richiesto DOPO aver impostato tutti i testi .. grazie per avermi aiutato a risolvere questo problema – thgc

5

questo non cambierebbe il problema di scorrimento, ma forse rendere più "nascosta" per l'utente:

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

Alcuni frammenti del codice aiuterebbero ad affrontare il problema più specifico.

EDIT: o cercare di aggiungere le UITextViews ad un UIView, quindi aggiungere l'UIView al UIScrollView. Assicurati che il contenuto di UIScrollView sia uguale alla dimensione di UIView.

+1

Grazie per aver fornito la soluzione e l'ho implementata con successo. – user574089

+0

Ottima soluzione, penso che sia la più intelligente e universale! Posso votare questo per essere la risposta accettata! – tong

1

Questo ha funzionato anche per me: p ma ho dovuto impostare l'altezza a qualcosa di meno di 300 (nel mio caso ho usato solo 10).

Fondamentalmente l'idea è di rendere la vista di testo non parte dell'area visibile di UIScrollView wile si sta modificando il testo di UITextView.