在 iPhone 应用程序上,我有一个自定义键盘,其工作方式与标准键盘类似;如果自定义文本字段成为第一响应者,它就会出现,如果该字段退出第一响应者,它就会隐藏。我还发布了 Generic及其隐藏的对应项UIKeyboardWillShowNotification
,UIKeyboardDidShowNotification
如下所示:
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 没有调整到全高并且我不必使用自定义方法将其调整回大小,那将是有益的。