我有一个录制视频的应用。该应用程序是cocos2d和UIKit的混合,虽然使用UIImagePickerController的部分都是UIKit。
问题:
拍摄视频后,点击“使用”按钮时,按钮会变为选中状态,然后没有任何反应。 “重新启动”按钮被禁用。您仍然可以播放/暂停视频,但视图永远不会被忽略,并且永远不会调用- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
。
问题发生在长短视频(< 5秒)上。导致内存警告无法重现该问题。在启动图像选择器之前更改音频会话也不会重现该问题。
我无法解决问题。它偶尔会发生。有什么想法吗?
以下是呈现UIImagePickerController
的代码 UIImagePickerController *tmpVC = [[UIImagePickerController alloc] init];
tmpVC.delegate = self;
tmpVC.allowsEditing = YES;
// First get the right media types for the right source
NSArray *types = nil;
if (useCamera)
{
types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypeCamera];
tmpVC.sourceType = UIImagePickerControllerSourceTypeCamera;
}
else
{
types = [UIImagePickerController availableMediaTypesForSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
tmpVC.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
}
// Then see if "movie" is in there
for (NSString *mediaType in types)
{
if ([mediaType isEqualToString:(NSString*)kUTTypeMovie])
{
tmpVC.mediaTypes = [NSArray arrayWithObjects:(NSString*)kUTTypeImage,(NSString*)kUTTypeMovie,nil];
tmpVC.videoQuality = UIImagePickerControllerQualityTypeHigh;
}
}
// Present the configured controller
[self presentModalViewController:tmpVC animated:YES];
[tmpVC release];
答案 0 :(得分:1)
您是否在模拟器中测试应用程序?尝试在设备上测试它,看它是否也一样。我记得我有一个类似的问题,我无法在模拟器中选择带有选择器的视频,因为在按下“使用”按钮后应用程序将“卡住”。
答案 1 :(得分:1)
我会在代码中查找其他位置,是否在if语句中调用?你分配并初始化调用 - (void)imagePickerController的东西:(UIImagePickerController *)选择器didFinishPickingMediaWithInfo:(NSDictionary *)info。这些只是我要寻找的一些小东西,再加上一个NSLog(),你可以看到调用函数知道它已被调用,或者那里可能有错误。
答案 2 :(得分:1)
我的问题的原因是在iOS 5中,
[picker.parentViewController dismissModalViewControllerAnimated:YES]
不再有效 - parentViewController
为零。令人困惑的是,这会导致选择器视图“完成”但不会被解除,并且它只是保持不活动状态。
相反,您可以使用:
[picker.presentingViewController dismissModalViewControllerAnimated:YES]
但这在iOS 4中不起作用,因为没有presentingViewController
消息。
您可以编写一个自动选择正确类别的类别,也可以保持对手动显示的视图控制器的引用。例如,在我的情况下,委托也是呈现它的视图控制器,所以我能够做到
[self dismissModalViewControllerAnimated:YES]
在我的选择器中。