伙计,我遇到了同样的问题..这是我使用 parentViewController 发现的:
请注意,从 5.0 开始,这将不再返回呈现视图控制器。
这是写在 UIViewController 的头文件中的...
我正在使用 ShareKit,modalViewController 在 iOS4 中运行良好,但在 iOS5 中,它不会自行关闭!这是因为在他们的代码中,他们使用:
[[currentView parentViewController] dismissModalViewControllerAnimated:animated];
并且 parentViewController 将返回 nil,因为这是一个模态呈现的视图控制器......
通过寻找解决方案,我找到了您的问题.. 所以,我决定自己修复它:P
我将上一行更改为:
[currentView dismissModalViewControllerAnimated:YES];
奇迹般有效。
编辑:根据您如何解释原始问题,有两个答案。这是第二个:
在 iOS5 中,模态控制器似乎只会在您单击 curl 时自行关闭,而不是在 curl 或背景上方。在 iOS5 中,为了让模态视图在点击背景或 curl 上方时自动消失,我将以下代码添加到控制器中,以监听模态视图上的点击,但忽略对按钮的点击。当使用带有页面卷曲的模态控制器时,这应该模仿以前版本的 iOS 中的行为。
- (void)viewDidLoad
{
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)];
tap.numberOfTapsRequired = 1;
tap.numberOfTouchesRequired = 1;
tap.delegate = self;
[backgroundView addGestureRecognizer:tap];
}
- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch{
//change it to your condition
if ([touch.view isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
- (void)handleTap:(UITapGestureRecognizer *)sender {
[self dismissModalViewControllerAnimated:YES];
}