使用键盘在ios 8中以模态方式呈现自定义尺寸ViewController的问题

时间:2015-03-31 11:51:25

标签: objective-c iphone ipad ios8

我在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);
     }
}

有关如何解决这个问题的想法吗?

2 个答案:

答案 0 :(得分:0)

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

您应该使用现有的自定义演示文稿和转换技术(UIModalPrestationCustomUIViewControllerTransitioningDelegate)来实现您尝试使用公共API执行的操作。

答案 1 :(得分:0)

通过添加

解决了这个问题
-(CGSize)preferredContentSize{
   return  CGSizeMake(view_width, view_height);
}