2

我正在尝试使用UIModalPresentationFormSheet视图样式在 iPad 应用程序中显示模态视图控制器。我正在寻找类似于邮件应用程序的新消息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 不是进行此设置的正确位置吗?

提前致谢:)

4

1 回答 1

3

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

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

你在 viewDidLoad 中调用 becomeFirstResponder 是对的。

于 2011-02-25T04:27:52.277 回答