Sur une application iPhone, j'ai un clavier personnalisé qui fonctionne comme le clavier standard ; il apparaît si un champ de texte personnalisé devient premier répondant et se cache si le champ abandonne le premier répondant. J'affiche également le fichier générique UIKeyboardWillShowNotification
, UIKeyboardDidShowNotification
et leurs équivalents cachés, comme suit :
NSMutableDictionary *userInfo = [NSMutableDictionary dictionaryWithCapacity:5];
[userInfo setObject:[NSValue valueWithCGPoint:self.center]
forKey:UIKeyboardCenterBeginUserInfoKey];
[userInfo setObject:[NSValue valueWithCGPoint:shownCenter]
forKey:UIKeyboardCenterEndUserInfoKey];
[userInfo setObject:[NSValue valueWithCGRect:self.bounds]
forKey:UIKeyboardBoundsUserInfoKey];
[userInfo setObject:[NSNumber numberWithInt:UIViewAnimationCurveEaseOut]
forKey:UIKeyboardAnimationCurveUserInfoKey];
[userInfo setObject:[NSNumber numberWithDouble:thisAnimDuration]
forKey:UIKeyboardAnimationDurationUserInfoKey];
[[NSNotificationCenter defaultCenter] postNotificationName:UIKeyboardWillShowNotification
object:nil
userInfo:userInfo];
Ce code fonctionne et je l'utilise dans UIViewController
sous-classes.
Depuis que l'iPhone OS 3.0 , UITableViewController
redimensionne automatiquement son tableView lorsque les claviers du système s'affichent et se cachent. Je ne compile que maintenant avec la version 3.0 et je pensais que le contrôleur devrait également redimensionner la table si mon clavier personnalisé apparaît, puisque j'affiche la même notification. Mais ce n'est pas le cas. Le contrôleur de la vue de la table est défini comme le délégué des champs de saisie.
Quelqu'un a-t-il une idée de la raison pour laquelle cela pourrait être le cas ? Quelqu'un a-t-il mis en œuvre quelque chose de similaire avec succès ?
J'ai des champs de saisie standard à côté des champs personnalisés, de sorte que si l'utilisateur change les champs, le clavier standard se cache et le clavier personnalisé s'affiche. Il serait avantageux que le tableView ne soit pas redimensionné à pleine hauteur et que je n'aie pas à le redimensionner avec une méthode personnalisée.