我正在尝试使用UIModalPresentationFormSheet
视图样式在iPad应用中显示模态viewController。我希望生成类似于Mail应用程序的新消息 UI /动画。
有两件事情表现不正确: 呈现的模态viewController总是动画到y = 0,即到最顶端 查看状态栏下方的一些像素,而不是邮件应用程序中的像素。
文档说:
UIModalPresentationFormSheet宽度 和呈现视图的高度是 小于屏幕和 视图以屏幕为中心。如果 该设备处于景观中 方向和键盘是 可见,视图的位置是 向上调整使视图 仍然可见。 所有未覆盖的区域 变暗以防止用户进入 与他们互动。
但是,在我的情况下,没有调光,我仍然可以与modalViewController下面的parentView进行交互。
提供modalView的控制器我这样做:
AddNewItemViewController *newItemViewController = [[AddNewItemViewController alloc] initWithNibName:@"AddNewItemViewController" bundle:nil];
[self presentModalViewController:newItemViewController animated:YES];
[newItemViewController release];
在提交的viewController中,我这样做:
- (void)viewDidLoad {
[nameField becomeFirstResponder];
[self setModalTransitionStyle:UIModalTransitionStyleCoverVertical];
[self setModalPresentationStyle:UIModalPresentationFormSheet];
[super viewDidLoad];
}
我希望有人可以帮助我。
我需要在父级和modalViewController上设置一些其他属性吗?
viewDidLoad不适合进行此设置吗?
提前致谢:)
答案 0 :(得分:3)
在调用presentModalViewController之前,在创建模态视图时设置过渡和演示样式。请记住,创建模态视图的视图“拥有”该对象。您希望所有者设置这些属性,因为您可以在应用程序的其他位置实现此模式视图,并希望使用不同的过渡或演示样式。这样,您每次都可以根据需要进行设置。
AddNewItemViewController *newItemViewController = [[AddNewItemViewController alloc] initWithNibName:@"AddNewItemViewController" bundle:nil];
newItemViewController.modalPresentationStyle = UIModalPresentationFormSheet;
[self presentModalViewController:newItemViewController animated:YES];
[newItemViewController release];
你在viewDidLoad中调用becomeFirstResponder是对的。