Ich habe eine App, die Videos aufnimmt. Die App ist eine Mischung aus cocos2d und UIKit, obwohl der Teil mit der UIImagePickerController alle UIKit ist.
Das Problem: Wenn Sie nach der Aufnahme eines Videos auf die Schaltfläche "Verwenden" tippen, wechselt die Schaltfläche in den ausgewählten Status und dann passiert nichts mehr. Die Schaltfläche "Erneut aufnehmen" ist deaktiviert. Sie können das Video immer noch abspielen/anhalten, aber die Ansicht wird nicht geschlossen und - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
wird nie aufgerufen.
Das Problem tritt bei langen und kurzen (<5 Sekunden) Videos auf. Das Verursachen von Speicherwarnungen hat das Problem nicht reproduziert. Auch das Wechseln der Audiositzungen vor dem Start der Bildauswahl führte nicht zur Behebung des Problems.
Ich konnte die Ursache des Problems nicht finden. Es tritt nur gelegentlich auf. Irgendwelche Ideen?
Hier ist der Code, der den UIImagePickerController darstellt
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];