我在我的应用程序中添加了一个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中处理一些动作,它保持居中。
现在,取消视图会使其向左跳转,而不是滑出。
由于它是一个强制横向应用(目前),我只能通知左跳。
任何想法如何让这个跳跃?
由于
答案 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;
}