Jor*_*ith 33 iphone objective-c modalviewcontroller ios5
我在做什么:
在我的应用程序中,我使用以下代码呈现模态视图控制器(包含应用程序设置):
optionsViewController.modalTransitionStyle = UIModalTransitionStylePartialCurl;
[self presentModalViewController:optionsViewController animated:YES];
Run Code Online (Sandbox Code Playgroud)
此过渡只是卷起视图的底部以显示一些设置.(请参阅"地图"应用程序中的示例.)当您点击页面的上半部分时,原始视图仍然存在但灰显,模态视图控制器将自动关闭(由操作系统处理,我没有' t代码).
-
什么不起作用:
这在iOS 4中运行良好(我的应用程序实际上是在App Store上).但在iOS 5中,看起来苹果已经改变了这种转变的行为,视图控制器不再自我贬低.我试图复制之前由操作系统处理的行为,但无法弄清楚如何操作.
-
我尝试过的:
在选项视图的顶部添加不可见按钮不起作用.然后页面卷起了我不想要的完整方式.
除此之外,我被困住了.我应该如何复制它最初的工作方式(或者我从一开始就以错误的方式进行复制!).任何帮助深表感谢!
Maz*_*yod 71
伙计,我遇到了同样的问题..这里是我发现使用parentViewController:
请注意,从5.0开始,这将不再返回呈现视图控制器.
这是写在UIViewController的头文件中...
我正在使用ShareKit,并且modalViewController在iOS4中完美运行,但在iOS5中,它只是不会解雇自己!这是因为在他们的代码中,他们正在使用:
[[currentView parentViewController] dismissModalViewControllerAnimated:animated];
Run Code Online (Sandbox Code Playgroud)
和parentViewController将返回nil,因为这是一个模态呈现的视图控制器...
通过寻找解决方案,我找到了你的问题..所以,我决定自己修复它:P
我将上一行更改为:
[currentView dismissModalViewControllerAnimated:YES];
Run Code Online (Sandbox Code Playgroud)
奇迹般有效.
编辑:根据您解释原始问题的方式,有两个答案.这是第二个:
在iOS5中,模态控制器似乎只在您单击卷曲时自动解散,而不是在卷曲或背景上方.在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{
//change it to your condition
if ([touch.view isKindOfClass:[UIButton class]]) {
return NO;
}
return YES;
}
- (void)handleTap:(UITapGestureRecognizer *)sender {
[self dismissModalViewControllerAnimated:YES];
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*ieb 15
你用来解雇模态视图控制器的代码是什么?我见过这样的代码:
[self.parentViewController dismissModalViewControllerAnimated: YES];
Run Code Online (Sandbox Code Playgroud)
这不适用于所有版本的操作系统.但是,这个:
[self dismissModalViewControllerAnimated: YES];
Run Code Online (Sandbox Code Playgroud)
应该.
| 归档时间: |
|
| 查看次数: |
37124 次 |
| 最近记录: |