UIModalPresentationFormSheet,缺少暗淡

Posted

技术标签:

【中文标题】UIModalPresentationFormSheet,缺少暗淡【英文标题】:UIModalPresentationFormSheet, dim is missing 【发布时间】:2011-02-24 23:01:21 【问题描述】:

我正在尝试使用UIModalPresentationFormSheet 视图样式在 iPad 应用程序中显示模态视图控制器。我正在寻找类似于邮件应用的新消息 UI/动画的东西。

有两件事行为不正确: 呈现的模态视图控制器总是动画到 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];

希望有人能帮帮我。

我需要在 parent 和 modalViewController 上设置一些其他属性吗?

viewDidLoad 不是进行此设置的正确位置吗?

提前致谢:)

【问题讨论】:

【参考方案1】:

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

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

你在 viewDidLoad 中调用 becomeFirstResponder 是对的。

【讨论】:

@RickiG 或@W Dyson - 这解决了背景暗淡的问题吗?

以上是关于UIModalPresentationFormSheet,缺少暗淡的主要内容,如果未能解决你的问题,请参考以下文章