我正在尝试调用UIImagePickerController来选择iPhone 3GS上的电影,当选择电影时,我只是将其解除并以模态方式呈现MyViewController,配置延迟为1.0秒 . 我注意到的是10%的时间,MyViewController上的presentModalViewController什么都不做,而它的工作时间是90% . 我想了解为什么这种行为和什么是补救措施 . 以下是示例代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
NSURL * videoURL =零;
NSString * mediaType = [info objectForKey:UIImagePickerControllerMediaType];
if ([mediaType isEqualToString:@"public.movie"])
{
videoURL = [info objectForKey:UIImagePickerControllerMediaURL];
}
picker.delegate = nil;
[[picker parentViewController] dismissModalViewControllerAnimated:YES];
[self performSelector:@selector(launchMyViewController :) withObject:nil
afterDelay:1.0];
}
- (void)launchMyViewController:(id)obj {
MyViewController *myCtrl = [[MyViewController alloc] initWithNibName:@"MyViewController" bundle:[NSBundle mainBundle] controller:self];
[self presentModalViewController:myCtrl animated:YES];
[myCtrl release];
NSLog(NSStringFromClass([self.modalViewController class]));
[path release];
}
我已经把NSLog语句打印出self.modalViewController类名,我注意到myCtrl没有以模态方式触发的时间是10%,self.modalViewController.class是UIImagePickerController . 否则,self.modalViewController.class是MyViewController . 我想知道为什么行为如此不可预测,以及解决方法或其他方式来实现我想要的相同的东西 .
1 回答
我猜想使用
performSelector:afterDelay:
调用是个问题 . 尝试立即调用您的启动方法,而不是通过延迟 .