使用键盘在 ios 8 中模态显示自定义大小 ViewController 的问题

Issue with presenting custom size ViewController modally in ios 8 with keyboard

我在 iPad 中以自定义大小显示带有导航控制器的视图控制器,但是当键盘出现时,视图控制器的框架大小发生了变化。它在 iOS 7 上完美运行,但是当 运行 在 iOS 8 上运行时我遇到了这个问题。

呈现视图的代码:

UINavigationController *navController = [[UINavigationController alloc]  initWithRootViewController:controllerToShow];
navController.modalPresentationStyle = UIModalPresentationFormSheet;
[[AppDelgate instance].rootViewController presentViewController:navController animated:YES completion:nil];

//in opening viewcontroller class frame is set 
  #define view_height 400
 #define view_width 700

-(void)viewWillAppear:(BOOL)animated{

     if ([UIApplication sharedApplication].statusBarOrientation ==   UIInterfaceOrientationLandscapeLeft || [UIApplication   sharedApplication].statusBarOrientation == UIInterfaceOrientationLandscapeRight)    {
          self.navigationController.view.superview.frame = CGRectMake(162, 200, view_width, view_height);
     }else {
       self.navigationController.view.superview.frame = CGRectMake(([AppDelgate instance].rootViewController.view.frame.size.width - 700)/2, 250, view_width, view_height);
     }
}

知道如何解决这个问题吗?

更改系统视图的私有视图层次结构绝不是一个好主意。

您应该使用现有的自定义呈现和转换技术(UIModalPrestationCustomUIViewControllerTransitioningDelegate)来实现您尝试使用 public API.

通过添加

解决了它
-(CGSize)preferredContentSize{
   return  CGSizeMake(view_width, view_height);
}