看来我有一个奇怪的时间问题。我打开uiimagepicker作为模式视图。当用户选择图像或我要拍摄图像时,将其保存到变量中,然后打开电子邮件界面作为模式视图。
我的问题是我在图像选择器上调用了dismissModalViewController,然后为我的电子邮件接口调用了presentmodalviewcontroller,但是图像选择器没有及时消失以显示电子邮件视图。有没有办法“等待”该行代码完成?
(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info{
if( [[info objectForKey:UIImagePickerControllerMediaType] isEqualToString:@"public.image"] ){
[self dismissModalViewControllerAnimated:YES];
imageFromCamera = [[UIImageView alloc] initWithImage:[info objectForKey:UIImagePickerControllerOriginalImage]];
MFMailComposeViewController *mailView = [[MFMailComposeViewController alloc] init];
mailView.mailComposeDelegate = self;
[self presentModalViewController:mailView animated:YES];
[mailView release];
}
}
我很确定我设计了错误的东西,但是如果可以的话,请帮帮我。
最佳答案
您可以使用performSelector:withObject:withDelay:
等待给定的时间过去(创建另一个方法,该方法稍后要执行代码。
但是,这可能会引入许多细微的计时错误,因此我建议仅在最极端的情况下使用它。
我认为您可能可以使用viewDidAppear:
进行某些操作,以查找在didFinishPicking…
中设置的标志,该标志指示您正在等待imagePicker的动画结束。由于它是didAppear,因此动画应该在那时完成。
关于iphone - dismissModalViewControllerAnimated非原子?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1160382/