2011-11-23 2 views
1

J'ai une application iphone. La vue est composée de deux enfants: une vue de table de 400 pixels de hauteur et une uitextview au bas de la vue d'environ 80 pixels de hauteur. J'essaye de déplacer le textview et la tableview vers le haut quand le clavier est visible. J'ai redimensionné la vue "principale" pour la rendre plus petite. Pourquoi ses enfants ne semblent pas redimensionner aussi? Dois-je réajuster le cadre de la vue de table et réajuster le cadre de la vue de texte? Je me demande juste quel est le comportement attendu. Dois-je utiliser setNeedsLayout() ou setNeedsDisplay? Je m'attendais à ce qu'en réduisant la taille de la vue "principale", ses enfants seraient "rétrécis" et contraints par leur vue parente. Il semble que la vue textuelle reste en bas de l'écran. La tableview semble être correcte (elle a rétréci), mais le textview n'a pas l'air de bouger. Bien que dans la nouvelle vue rétrécie, il y ait maintenant une zone blanche où le texte devrait se déplacer vers.iphone: Comment redimensionner une vue et tous ses enfants (dans le contexte de l'apparition du clavier)?

// Called when the UIKeyboardDidShowNotification is sent. 

- (void) keyboardWasShown: (NSNotification *) aNotification {

NSLog(@"keyboard was shown"); 
NSDictionary* info = [aNotification userInfo]; 
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size; 
//CGRect keyboardFrame = [[info objectForKey:UIKeyboardFrameEndUserInfoKey]CGRectValue]; 
NSLog(@"kb size is:%f",kbSize.height); 

//UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.height, 0.0); 

CGRect newFrame = self.view.frame; 
//20 status bar height, 44 is nav bar height 
newFrame.size.height = 480 -20 - 44 - kbSize.height; 

self.view.frame = newFrame; 
self.view.layer.borderWidth = 1.0f; 
self.view.layer.borderColor = [[UIColor redColor] CGColor]; 

[self.view setNeedsLayout]; 
[self.view setNeedsDisplay]; 

}

Répondre

2

Essayez utilisation UIScrollView. Placez ces contrôles à l'intérieur de scrollview et utilisez la propriété contentOffset pour faire défiler vers le haut/bas. C'est très facile.

Bonne chance!

0

Utilisez UIScrollView pour votre contenu.

Lorsque la notification est reçue, développez la taille du contenu de la vue de défilement avec la hauteur du clavier. Ensuite, définissez le décalage de contenu.

Questions connexes