В приложении для iPhone у меня есть пользовательская клавиатура, которая работает как стандартная клавиатура; оно появляется, если пользовательское текстовое поле становится первым ответчиком и скрывается, если поле уходит в отставку с первого ответчика. Я также проводкой Generic UIKeyboardWillShowNotification
, UIKeyboardDidShowNotification
и их скрытие коллег, как следует:Пользовательская клавиатура (iPhone), UIKeyboardDidShowNotification и UITableViewController
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];
Этот код работает, и я использую его в UIViewController
подклассов.
Начиная с iPhone OS 3.0, UITableViewController
автоматически изменяет размер таблицы TableView, когда системные клавиатуры показывают и скрывают. Я только сейчас компилирую против 3.0, и я думал, что контроллер также должен изменить размер таблицы, если появится моя пользовательская клавиатура, так как я отправляю одно и то же уведомление. Однако это не так. Контроллер табличного представления задается как делегат полей ввода.
Кто-нибудь есть идея, почему это может быть дело? Кто-нибудь реализовал что-то подобное успешно?
У меня есть стандартные поля ввода вдоль пользовательских, поэтому, если пользователь изменяет поля, которые скрывает стандартная клавиатура, и отображается обычное. Было бы полезно, если бы tableView не изменил размер до полной высоты, и мне не пришлось изменять его размер с помощью настраиваемого метода.
Да, я вижу, это то, что я должен сделать, чтобы найти решение (я в настоящее время в дороге), и если я не найду что-то, что я могу подключить, я просто разрешу его вручную. Значит, я вознагражу щедрость вам. :) – Pascal