【发布时间】:2010-03-12 16:49:59
【问题描述】:
在 iPhone 应用程序上,我有一个自定义键盘,其工作方式与标准键盘类似;如果自定义文本字段成为第一响应者,它就会出现,如果该字段退出第一响应者,它就会隐藏。我还发布了通用 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 没有调整到全高并且我不必使用自定义方法将其调整回大小,那将是有益的。
【问题讨论】:
标签: iphone cocoa-touch uikit uikeyboard nsnotification