UIImagePickerControllerDelegate没有正确响应
我在iPhone 3Gs上使用iOS 4.2.1中的UIImagePickerController。 我以前使用过的方法
- (void)imagePickerController: didFinishPickingImage: editingInfo:
没有问题。 我有另一个应用程序在另一个应用程序中使用新的didFinishPickingMediaWithInfo API,一旦媒体被选中,该方法永远不会被select器调用。
//MyViewController.h @interface MyViewController : UIViewController < UIImagePickerControllerDelegate, UINavigationControllerDelegate> //MyViewController.m if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) { UIImagePickerController *picker = [[UIImagePickerController new] autorelease]; picker.delegate = self; picker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; picker.mediaTypes = [[NSArray alloc] initWithObjects: (NSString *) kUTTypeMovie, nil]; picker.videoQuality = UIImagePickerControllerQualityTypeHigh; picker.allowsEditing = NO; [self presentModalViewController:picker animated:TRUE]; } - (void)imagePickerController:(UIImagePickerController *)picker imagePickerController:didFinishPickingMediaWithInfo:(NSDictionary *)editingInfo{ //**NEVER CALLED** }
你有
- (void)imagePickerController:(UIImagePickerController *)picker imagePickerController:didFinishPickingMediaWithInfo:(NSDictionary *)editingInfo
你可能想要的地方
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
你有这样的: – (void)imagePickerController:(UIImagePickerController *)picker imagePickerController:didFinishPickingMediaWithInfo:(NSDictionary *)editingInfo
看起来你重复了这个方法的'imagePickerController:'部分。
把select器放在autorelease池中可能是你的问题 – 它可能不会持续很长时间来调用它的代表。 保留它,而不是:
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
然后在代表你可以释放它:
[picker dismissModalViewControllerAnimated:YES]; [picker release];
这可能是这一行:
if([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypePhotoLibrary]) {
正在返回假。 如果用户的照片库是空的,就会发生这种情况。 例如,在iPhone模拟器上就是这样。
编辑:如其他示例所示,您也错误委托方法。 它应该是:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info
这是我用来通过3G上的iOS 4.2上传video到webservice的程序
-(void)uploadeVideoClicked{ UIImagePickerController *ipc = [[UIImagePickerController alloc] init]; ipc.sourceType = UIImagePickerControllerSourceTypePhotoLibrary; ipc.allowsEditing=NO; ipc.videoQuality = UIImagePickerControllerQualityTypeMedium; ipc.mediaTypes =[UIImagePickerController availableMediaTypesForSourceType:ipc.sourceType]; ipc.mediaTypes = [NSArray arrayWithObject:(NSString *)kUTTypeMovie]; ipc.delegate = self; [self presentModalViewController:ipc animated:YES]; } - (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info { NSMutableDictionary *infoDict = [[NSMutableDictionary alloc]init]; NSString *mediaType = [info objectForKey:UIImagePickerControllerMediaType]; if ([mediaType isEqualToString:@"public.image"]){ UIAlertView *myAlertView = [[UIAlertView alloc] initWithTitle:@"" message:@"You Select a image Please select Movie" delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; [myAlertView show]; [myAlertView release]; } else if ([mediaType isEqualToString:@"public.movie"]){ NSURL *videoURL = [info objectForKey:UIImagePickerControllerMediaURL]; mAppDelegate.uploadType = @"Video"; NSData *webData = [NSData dataWithContentsOfURL:videoURL]; [infoDict setValue:webData forKey:@"VideoUrl"]; [infoDict setValue:[[mAppDelegate.userInfoArray objectAtIndex:1]valueForKey:@"user_id"] forKey:@"user_id"]; //Call webService to upload video ; } [picker dismissModalViewControllerAnimated:YES]; [infoDict release]; }
- 使用Swift在CloudKit中获取logging资产
- 将PDF图像转换为Parse.com的NSData
- Xcode故事板显示UI元素周围的蓝色框架。 我怎么关掉这个?
- 如何将UISearchController的searchBar设置为不是tableHeaderView或navigationItem.titleview的视图?
- 带有viewWithTag的UILabel – (文字不出现)
- 将Swift编译时安全变成用户安全
- 如何确定在iOS设备上是否安装了Dropbox?
- 禁用MagicalRecord错误消息和警告
- presentViewController和UINavigationController之间的区别?