使用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实际上并没有从运行中删除所有内容。
是否有其他人遇到类似这样的问题,或者知道在切换控制器时如何实际清除视图控制器?
答案 0 :(得分:0)
没有解决仍然在后台运行的NSTimer,但确实解决了与在后台打开的内容无关的景观事件