2010-07-22 16 views
7

J'éprouve quelque chose considéré comme un bug dans ma situation. Probablement ce n'est pas un bug mais une fonctionnalité;).UITextView à l'intérieur du problème de défilement UIScrollView

Voici mon cas:

je charge un UIScrollView avec mon contenu. Une partie de mon contenu est chargée asynchrone après que la vue est déjà chargée. Cela fonctionne très bien et sans problème. Toutefois, certains de ces contrôles sont des contrôles UITextView. Une fois que j'ai défini le contenu (propriété text) de ces contrôles après le viewDidLoad, mon UIScrollView défile jusqu'à la dernière UITextView qui a été définie. Je veux empêcher cela et je veux que UIScrollView maintienne sa position de défilement la plus haute.

En résumé: Si je définis la propriété Text dans la méthode viewDidLoad, aucun défilement ne se produit. Si je définis la propriété Text sur UITextView après la méthode viewDidLoad (car je charge les données asynchrones), UIScrollView défilera jusqu'à la dernière UITextView qui a été définie. Je veux empêcher ce parchemin.

Comment puis-je y parvenir? J'ai le sentiment que c'est juste une propriété qui est mal réglée mais je n'arrive pas à la trouver.

Merci d'avance.

EDIT:

J'ai essayé de définir la propriété « scrollEnabled » NO avant de définir les valeurs et OUI après, mais cela n'a pas eu d'effet. ScrollView défilera toujours lorsque la propriété text de UITextView est définie.

Répondre

6

I Correction du problème avec un travail autour de:

I définir la taille du contenu de défilante à quelque chose de petit, comme 320 x 300 ou quelle que soit la hauteur du cadre de scrollview est donc fait mon travail, puis mis la taille du contenu revient à la normale.

Cela empêche le défilement pendant le chargement des données et l'active dès que le chargement est terminé.

+0

ou vous venez de définir le contenu requis après avoir réglé tous les textes .. merci de m'avoir aidé à résoudre ce problème – thgc

5

Cela ne changerait pas le problème de défilement, mais peut-être faire « caché » pour l'utilisateur:

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

Quelques extraits de votre code contribueraient à faire face au problème plus spécifique.

EDIT: Ou essayez d'ajouter les UITextViews à un UIView, puis ajoutez le UIView à la UIScrollView. Assurez-vous que contentSize UIScrollView est la même que la taille de l'UIView.

+1

Merci d'avoir donné la solution et je l'ai implémenté avec succès. – user574089

+0

Grande Solution, je pense que c'est la plus intelligente et universelle! Je peux voter celui-ci pour être la réponse acceptée! – tong

1

Cela a fonctionné pour moi aussi: p mais j'ai dû régler la hauteur à quelque chose de moins de 300 (dans mon cas, je viens d'utiliser 10). Fondamentalement, l'idée est de faire en sorte que la vue de texte ne fasse pas partie de la zone visible du fichier UIScrollView lorsque vous modifiez le texte de UITextView.