我在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);
}
}
有关如何解决这个问题的想法吗?
答案 0 :(得分:0)
更改系统视图的私有视图层次结构绝不是一个好主意。
您应该使用现有的自定义演示文稿和转换技术(UIModalPrestationCustom
和UIViewControllerTransitioningDelegate
)来实现您尝试使用公共API执行的操作。
答案 1 :(得分:0)
通过添加
解决了这个问题-(CGSize)preferredContentSize{
return CGSizeMake(view_width, view_height);
}