UIModalPresentationFormSheet,dim缺失

时间:2011-02-24 23:01:22

标签: ipad uiviewcontroller uimodalpresentationstyle

我正在尝试使用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不适合进行此设置吗?

提前致谢:)

1 个答案:

答案 0 :(得分:3)

在调用presentModalViewController之前,在创建模态视图时设置过渡和演示样式。请记住,创建模态视图的视图“拥有”该对象。您希望所有者设置这些属性,因为您可以在应用程序的其他位置实现此模式视图,并希望使用不同的过渡或演示样式。这样,您每次都可以根据需要进行设置。

    AddNewItemViewController *newItemViewController = [[AddNewItemViewController alloc] initWithNibName:@"AddNewItemViewController" bundle:nil];
    newItemViewController.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentModalViewController:newItemViewController animated:YES];
    [newItemViewController release];

你在viewDidLoad中调用becomeFirstResponder是对的。