在我的 iPad 应用程序中,我使用表单样式呈现控制器
controller.modalPresentationStyle=UIModalPresentationFormSheet;
在横向模式下,当设备的键盘打开时,我可以设置 tableView 的大小,以便用户能够看到表格的所有记录。
获取显示/隐藏键盘事件。我已经设定NSNotification
问题
但是当用户使用外部/虚拟键盘在表格单元格的文本字段中点击时,我没有得到键盘显示/隐藏的事件。因此,当文本字段成为第一响应者时,Tableview 的大小正在减小,但在用户连接外部键盘时不需要。
任何人都可以在这里指导/帮助,我该怎么办?这样我就可以在使用外部键盘时停止设置大小。
注册键盘事件
- (void)registerForKeyboardNotifications{
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasShown:)
name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWasHidden:)
name:UIKeyboardDidHideNotification object:nil];
}
在自动旋转和文本字段成为第一响应者时设置框架
-(void)setFramesOfTable
{
CGRect rct=tableView.frame;
if(appDel.isThisIPad && ([[UIApplication sharedApplication] statusBarOrientation]==UIInterfaceOrientationLandscapeLeft || [[UIApplication sharedApplication] statusBarOrientation]==UIInterfaceOrientationLandscapeRight) && [selectedField isFirstResponder])
{
rct.size.height=400.0;
}
else
{
rct.size.height=576.0;
}
tableView.frame=rct;
}
- (void)textFieldDidBeginEditing:(UITextField *)textField{
selectedField = textField;
[self setFramesOfTable];
}
-(NSUInteger)supportedInterfaceOrientations
{
[self setFramesOfTable];
return UIInterfaceOrientationMaskAll;
}
谢谢。