使用键盘在 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);
}
}
知道如何解决这个问题吗?
更改系统视图的私有视图层次结构绝不是一个好主意。
您应该使用现有的自定义呈现和转换技术(UIModalPrestationCustom
和 UIViewControllerTransitioningDelegate
)来实现您尝试使用 public API.
通过添加
解决了它
-(CGSize)preferredContentSize{
return CGSizeMake(view_width, view_height);
}
我在 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);
}
}
知道如何解决这个问题吗?
更改系统视图的私有视图层次结构绝不是一个好主意。
您应该使用现有的自定义呈现和转换技术(UIModalPrestationCustom
和 UIViewControllerTransitioningDelegate
)来实现您尝试使用 public API.
通过添加
解决了它-(CGSize)preferredContentSize{
return CGSizeMake(view_width, view_height);
}