兄弟,我遇到了同样的问题...这是我关于使用parentViewController找到的信息:
注意,在5.0之后,此方法将不再返回presenting view controller。
这在UIViewController的头文件中有说明...
我正在使用ShareKit,并且在iOS4中modalViewController工作得很好,但在iOS5中,它就无法自动关闭!这是因为他们的代码中,他们在使用:
[[currentView parentViewController] dismissModalViewControllerAnimated:animated]
由于这是一个模态呈现的视图控制器,所以parentViewController将返回nil...
在寻找解决方案时,我发现了你的问题...因此,我决定自己修复它 :P
我将上一行更改为:
[currentView dismissModalViewControllerAnimated:YES]
非常有效。
编辑: 根据对原始问题的理解不同,有两个答案。这是第二个答案:
在iOS5中,似乎模态控制器只有在单击翻页时才会关闭自身,而不是在翻页上方或背景处。为了实际上使模态视图在单击背景或翻页上方时关闭自身,我添加了以下代码到控制器中,以监听对模态视图的点击,但忽略对按钮的点击。这应该模仿之前版本的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{
if ([touch.view isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
- (void)handleTap:(UITapGestureRecognizer *)sender {
[self dismissModalViewControllerAnimated:YES];
}