2010-05-24 5 views
0

Je pense qu'il me manque quelque chose d'évident et j'apprécierais une réponse.Défilement de l'écran vers le haut pour exposer TextView au-dessus du clavier

J'ai une vue avec une tableview groupée en 2 sections, chaque section ayant une rangée et un textView, les hauteurs des rangées 335 et 140. Cela permet une boîte avec des coins bien arrondis pour taper du texte quand le clavier apparaît (140 section de hauteur) et quand le clavier est fermé, une belle boîte pour lire plus de texte (notes); la plupart du temps, l'utilisation est sans le clavier.

J'ai également ajouté une barre d'outils en bas de l'écran pour faire défiler vers le haut au-dessus du clavier. Un bouton sur la barre d'outils rejette le clavier. Cette dernière partie fonctionne très bien avec le clavier va et bas en utilisant une notification et le code suivant dans une méthode keyboardWillShow:

[UIView beginAnimations:@"showKeyboardAnimation" context:nil]; 
[UIView setAnimationDuration:0.50]; 
self.view.frame = CGRectMake(self.view.frame.origin.x, 
          self.view.frame.origin.y, 
          self.view.frame.size.width, 
          self.view.frame.size.height - 216); 
[UIView commitAnimations]; 

Mais avec le code ci-dessus, les 2 sections du tableView restent unscrolled, seule la barre d'outils et le mouvement du clavier. Avec le code suivant (trouvé à la fois dans les messages précédents), la barre d'outils et les sections tableView se déplacent.

[UIView beginAnimations:nil context:NULL]; 
[UIView setAnimationDuration:0.50]; 

CGRect rect = self.view.frame; 
rect.origin.y -= 216; 
self.view.frame = rect; 

[UIView commitAnimations]; 

Maintenant, je sais que je dois modifier les chiffres pour obtenir le tout comme je le veux, mais ma première question est ce qui est considérablement différent entre les 2 ensembles de code que les sections se déplacent dans le 2ème, mais pas le 1er? La barre d'outils se déplace également avec le 2ème code.

La deuxième question est, vais-je être en mesure de faire défiler la plus petite section de hauteur de l'écran au-dessus du clavier tout en déplaçant la barre d'outils juste 216?

Merci

Répondre

1

je peux être absent quelque chose ici, mais dans le premier morceau de code, vous changez la hauteur par 216. Tout au 2ème morceau de code, vous modifiez l'origine de toute la vue par 216 dans la direction y. Selon la façon dont vous avez défini le cadre dans IB, le premier morceau de code peut ne pas le déplacer si vous ne lui permettez pas de se déplacer dans cette direction. Vérifiez vos paramètres dans la fenêtre de l'inspecteur.

Lorsque vous dites "non-défrisé" vous faites référence à eux ne pas changer l'emplacement dans la vue principale correcte? Ce serait différent de leur défilement (que vous pouvez aussi faire en changeant la valeur de défilement). Vous voudrez peut-être consulter l'exemple du tiroir caché ici, car ils poussent les vues dans et hors de la vue principale, un peu comme une barre d'outils, et je pense que c'est ce que vous demandez. Tout le "scrolling" me rejette quand même.

http://cocoawithlove.com/2009/05/intercepting-status-bar-touches-on.html

+0

Merci, Rob. Je fixais cela le plus longtemps (hauteur vs. origine) et je ne l'ai pas vu. Le lien est parfait pour que je fasse ce que je veux. –

+0

Ne blesse jamais d'avoir une seconde paire d'yeux sur un problème! Bonne chance, heureux d'aider. – iwasrobbed

0

De mémoire, quelque chose comme

tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight 
Questions connexes