iPad / iOS模式视图在关闭时向左跳转

时间:2010-09-20 09:14:06

标签: iphone ios4 ipad modalviewcontroller

我在我的应用程序中添加了一个modalView,一切正常,但在关闭模态时,整个modalView在它消失时向左跳1-2厘米左右。

我还没有找到任何理由,所以这里有关于模态的代码:

AppController的:

- (void) showNameModal:(Player *)player 
{
    namesModal = [[PlayerModalView alloc] init];
    namesModal.delegate = self;
    namesModal.player = player;

    UINavigationController *navCon = [[UINavigationController alloc] initWithRootViewController:namesModal];

    navCon.modalPresentationStyle = UIModalPresentationFormSheet;
    [self presentModalViewController:navCon animated:YES];

    [navCon release];
    [namesModal release];
 }

 - (void)didDismissModalView 
 {
    [self dismissModalViewControllerAnimated:YES];
 }

ModalView:

 - (void)dismissView:(id)sender 
 {
    [delegate didDismissModalView];
 }

通过键盘通过导航按钮调用

  [self dismissView:nil];

正如你所看到的,它没有什么特别之处,实际上可以从手册中获取。 会发生什么:

模态出现在屏幕中央,从底部滑入。一直居中。 我可以在modalView中处理一些动作,它保持居中。

现在,取消视图会使其向左跳转,而不是滑出。

由于它是一个强制横向应用(目前),我只能通知左跳。

任何想法如何让这个跳跃?

由于

4 个答案:

答案 0 :(得分:0)

试试这个,

- (void)didmissView:(id)sender
{
   [self.navigationController didmissModelViewControllerAnimated:YES];
}

答案 1 :(得分:0)

您不是以模态方式呈现PlayerModalView的实例,而是UINavigationController。您看到的左侧混蛋很可能是导航控制器的默认动画,尝试将幻灯片转换为(不存在的)上一个视图。

听起来你不需要PlayerModalView的导航控制器。相反,您应该为它创建一个普通的视图控制器。

答案 2 :(得分:0)

此解决方案似乎运作良好:Modal View Controller with keyboard on landscape iPad changes location when dismissed

为了简化第一响应者的辞职(如果发现困难),您只需致电

[self.view endEditing:YES];
[self dismissModalViewControllerAnimated:YES];

答案 3 :(得分:0)

问题是你以模态方式显示的UIViewController不允许你呈现它的方向,所以当它消失时,它会按照它认为“允许”的方向做到这一点。

将此添加到UIViewController为您的模态视图:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return YES;
}