xcode presentModalViewController使用AVCam使旧的ViewController在后台保持活动状态

时间:2012-11-09 18:47:37

标签: xcode nstimer presentmodalviewcontroller

使用AVCam的应用程序出现问题。应用程序拍摄照片并将其保存到卷筒中。打开应用程序后,它可以完美地拍摄照片并按照应有的方式保存它们。但是,一旦我离开该视图控制器去另一个视图控制器然后返回,它将保存图像旋转90度的正常肖像图像。确实非常奇怪的活动。

经过大量的头发拉动后,我想也许我正在尝试运行太多会话,所以我确保在viewdidload和viewdiddisappear中结束会话:

-(void)viewDidUnload{
if([[self captureManager] session ]){
    [[[self captureManager] session] stopRunning];
    self.captureManager = nil;
}
}

-(void)viewDidDisappear:(BOOL)animated{
if([[self captureManager] session ]&&rollCancel==NO){
    [[[self captureManager] session] stopRunning];
     self.captureManager = nil;
}
}

仍然无法正常工作。离开后仍然保存不正确。

我改变了这样的观点:      - (无效)openMenu {
        MenuViewController * vc = [[MenuViewController alloc] initWithNibName:@“MenuViewController”bundle:nil];         [self presentModalViewController:vc animated:YES];         [self dismissViewControllerAnimated:NO completion:nil];     }

也尝试过:

-(void)openMenu{

[self dismissViewControllerAnimated:NO completion:^{
    MenuViewController * vc = [[MenuViewController alloc] initWithNibName:@"MenuViewController" bundle:nil];
    [self presentModalViewController:vc animated:YES];
    [self dismissViewControllerAnimated:NO completion:nil];
}];    
}

我不需要发布,因为我在弧上运行。这不起作用,我甚至无法使用此选项更改屏幕。所以,我添加了一个计时器,看看在离开视图控制器后动作是否会继续动作:

updateTimer = [NSTimer timerWithTimeInterval: 5.0
                                      target: self selector: @selector(autoTimer)
                                    userInfo: nil repeats: YES];
[[NSRunLoop mainRunLoop] addTimer: updateTimer forMode: NSDefaultRunLoopMode];

-(void)autoTimer{
NSLog(@"blablabla");
}

毫不奇怪,即使在离开视图控制器之后,blablabla仍继续打印到我的控制台。如果我来回走动,它会继续制作新的重复计时器并将我的控制台日志发送到垃圾邮件。

这与我的应用程序在返回屏幕后无法正确保存有关。这意味着执行presentmodalviewcontroller实际上并没有从运行中删除所有内容。

是否有其他人遇到类似这样的问题,或者知道在切换控制器时如何实际清除视图控制器?

1 个答案:

答案 0 :(得分:0)

没有解决仍然在后台运行的NSTimer,但确实解决了与在后台打开的内容无关的景观事件

在此处找到解决方案:https://stackoverflow.com/a/6335992/1688727