2010-07-04 9 views
0

J'ai un UITextView inclus dans un UITableViewCell. La mise en page est correcte lorsque les vues sont affichées initialement, mais une fois que je clique dans l'UITextView, il ne défile pas automatiquement et tout l'UITextView devient invisible.Comment faire défiler UITextView en l'entrant?

Cette image est lorsque le UITextView n'est pas actif:

http://img13.imageshack.us/img13/3894/unloaded.png

Et celui-ci est quand je clique dans le UITextView pour le rendre actif:

img337.imageshack.us/img337/ 2583/loaded.png (Mettez "http: //" avant le lien, je ne peux pas poster plus d'un lien hypertexte)

Je veux que la cellule avec UITextView défile vers le haut. Comment puis-je atteindre cet objectif?

Toutes les suggestions sont appréciées.

Julio Cezar

Répondre

0

Je l'ai déjà fait. Ma solution n'est pas le meilleur mais il fonctionne très bien: tout se passe sur tableView: cellForRowAtIndexPath:

1) Pour chaque cellule qui a un UITextView J'ai un NSDictionary: Je sauve tous mes UITextView est sur les cellules sur NSDictionary avec un particulier clé.

2) Et j'ai aussi une autre NSDictionary avec les objets indexPath qui sont créés dans tableView: cellForRowAtIndexPath. Si une cellule A a UITextView A, ils auront la même clé dans les NSDictionaries.

3) Je Mettre en oeuvre le UITextViewDelegate et appelle textViewDidBeginEditing: voici mon code:

  • (void) textFieldDidBeginEditing: (UITextField *) textField {

NSArray * clés = [self.answersDic allKeysForObject: textField];

id * key = (id *) [clés objectAtIndex: 0];

NSIndexPath * tempIndex = [self.indexPathForViews objectForKey: key];

[tableViewLocal scrollToRowAtIndexPath: tempIndex atScrollPosition: UITableViewScrollPositionTop animé: YES];

}

OBSERVATIONS:

a) answersDic est le NSDictionary où mes UITextViews sont enregistrés.

b) indexPathForViews est le NSDictionary où mes IndexPaths sont enregistrés.

c) la partie la plus importante de ce code: la méthode, qui fait le point de vue pour faire défiler:

[tableViewLocal scrollToRowAtIndexPath: tempIndex atScrollPosition: UITableViewScrollPositionTop animé: OUI];

Alors, c'est tout. Merci de votre aide!

0

La façon la plus simple serait de faire une IBOutlet pour les éléments que vous souhaitez déplacer vers le haut, puis dans le code faire quelque chose comme ça quand votre champ de texte est sélectionné:

myTextView.center.y = 200 ou quelle que soit la valeur que vous voyez.

+0

Merci pour la réponse, mais cela n'a pas fonctionné. La seule chose qui arrive est que mon UITextView sort de la cellule. – jcdmb

+0

Si la cellule et UIView sont séparés, vous devez les déplacer tous les deux vers le haut, ou s'ils sont tous deux de la même vue, vous pouvez les déplacer ensemble. – SeniorShizzle

+0

Ce n'est pas une solution dynamique. Cela ne fonctionnerait que pour un seul cas, mais je génère dynamiquement ma vue à partir d'un fichier XML. Apprécierait toute autre suggestion. – jcdmb

Questions connexes