2014-04-16 6 views
0

J'ai quelques UITableViewControllers dans mon application. J'ai UITextFields dans certains des UITableViewCells. Parfois, le tableView se redimensionne lorsque le clavier apparaît, mais pas toujours.UITableViewController redimensionnement TableView sporadiquement

J'ai joint quelques exemples. Les deux ont un UITextField qui sont les firstResponder actuels. J'ai tiré vers le haut pour les deux captures d'écran pour montrer l'indicateur de défilement.

Le UITableViewController sur la gauche est redimensionné c'est tableView lorsque le clavier est apparu, mais le UITableViewController sur la droite n'a pas. Qu'est-ce que je fais mal?

EDIT

Merci à tous pour me aider sur ce problème. N'a toujours pas été résolu. Ils ont tous deux un UINavigationController comme parentViewController. Celui sur la droite est le UINavigationControllerstopViewController tandis que celui de gauche a été présenté à partir du topViewController. Toute aide serait appréciée.




enter image description here enter image description here

+0

Sont-ils réellement à la fois 'UITableViewController' ou est-ce juste un' UITableView' à l'intérieur d'un 'UIViewController'? – CrimsonChris

+0

C'est une question délicate, je l'ai déjà vu dans une de mes applications et je crois que cela a à voir avec la façon dont UITableView a été ajouté. Se pourrait-il que celui de gauche soit ajouté directement en tant que 'UITableViewController' dans un' UINavigationController' mais que le côté droit soit ajouté en tant que sous-vue ('UITableView') ou non dans' UINavigationController'? –

+0

J'ai aussi eu ce problème peut-être que vous avez inclus certains points de vente dans la vue de la table pas dans la tableviewcell –

Répondre

2

Donc, j'ai compris une solution de contournement:

- (void)setContentInsetWithTextField:(UITextField *)textField 
{ 
    CGFloat keyboardHeight = 216; 

    CGFloat movement = (textField.isFirstResponder ? keyboardHeight : -keyboardHeight); 

    UIEdgeInsets contentInset = self.tableView.contentInset; 
    contentInset.bottom = contentInset.bottom + movement; 
    self.tableView.contentInset = contentInset; 
} 

Appelez cette méthode dans le textFieldDidBeginEditing et la textFieldDidEndEditing et permet de résoudre les problème!

+0

Ça ne marche pas pour moi ... –

Questions connexes