我使用模态视图在屏幕上显示内容但键盘覆盖某些字段

时间:2011-11-16 15:12:37

标签: iphone

我正在显示模态对话框,但键盘覆盖了一些可编辑的字段。是否有任何方法可以自动移动视图...或者我必须手动编写执行此操作所需的代码吗?即改变模态视图的位置等

UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:editViewController];
    navController.modalPresentationStyle = UIModalPresentationFormSheet;
    navController.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;

    [editViewController release];

    [self presentModalViewController:navController animated:YES];

1 个答案:

答案 0 :(得分:1)

使用UIKeyboardWillShowNotification订阅UIKeyboardWillHideNotificationNSNotificationCenter通知,并使用UIScrollView允许用户向下滚动。将UIScrollView contentSize属性设置为普通的完整帧,并在键盘出现和消失时调整滚动视图的帧大小。在处理UIKeyboardWillShow / HideNotifications的方法中使用此代码可以获得键盘的大小和动画持续时间:

NSDictionary *userInfo = [notification userInfo];

NSValue *keyboardBoundsValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
[keyboardBoundsValue getValue:&keyboardBounds];

NSValue* value = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
NSTimeInterval duration = 0;
[value getValue:&duration]; 

处理这些案例的另一个提示 - 当您旋转设备时,您将非常快速地接收这两个通知(隐藏+显示)。