Ios UIPopover从错误的按钮显示
我有一个应用程序,可以从现有库中获取图像,也可以从相机中获取新图像 在iPad上,当我按下“从库”按钮时,弹出框会(正确地)显示在按下按钮的上方,但是当我按下相机按钮的“拍照”时,相机控制器也会显示在“从库”按钮上方。。。我需要这个出现在“拍照”按钮上,否则它看起来有点奇怪 这里是使用的代码Ios UIPopover从错误的按钮显示,ios,objective-c,ipad,uipopovercontroller,Ios,Objective C,Ipad,Uipopovercontroller,我有一个应用程序,可以从现有库中获取图像,也可以从相机中获取新图像 在iPad上,当我按下“从库”按钮时,弹出框会(正确地)显示在按下按钮的上方,但是当我按下相机按钮的“拍照”时,相机控制器也会显示在“从库”按钮上方。。。我需要这个出现在“拍照”按钮上,否则它看起来有点奇怪 这里是使用的代码 - (void)pickImageFromLibrary: (id)sender { [Flurry logEvent: @"PickImage"]; [self openImagePic
- (void)pickImageFromLibrary: (id)sender
{
[Flurry logEvent: @"PickImage"];
[self openImagePickerWithSourceType: UIImagePickerControllerSourceTypePhotoLibrary];
}
- (void)takePicture: (id)sender
{
[Flurry logEvent: @"TakeImage"];
[self openImagePickerWithSourceType: UIImagePickerControllerSourceTypeCamera];
}
- (void)openImagePickerWithSourceType: (UIImagePickerControllerSourceType)sourceType
{
if ( ![UIImagePickerController isSourceTypeAvailable: sourceType] ) {
UIAlertView *alert = [[UIAlertView alloc] initWithTitle: NSLocalizedString( @"Error", @"" )
message: NSLocalizedString( @"We are sorry, but this functionality is not available at your device.", @"No camera eror" )
delegate: nil
cancelButtonTitle: NSLocalizedString( @"Dismiss", @"")
otherButtonTitles: nil];
[alert show];
return;
}
UIImagePickerController *picker = [[UIImagePickerController alloc] init];
picker.delegate = self;
picker.sourceType = sourceType;
self.isCameraShown = YES;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
self.popover = [[UIPopoverController alloc] initWithContentViewController:(UIViewController *)picker];
CGRect takePhotoRect;
takePhotoRect.origin = self.view.frame.origin;
takePhotoRect.size.width = 1;
takePhotoRect.size.height = 1;
[self.popover setPopoverContentSize:CGSizeMake(320.0, 216.0)];
[self.popover presentPopoverFromRect:_openLibraryButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}else{
[self presentViewController:picker animated:YES completion:NULL ];
}
}
您正在从
openLibraryButton
显示popover
[self.popover presentPopoverFromRect:_openLibraryButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
您需要添加检查以查看是否按下了拍照
或从库中选择
按钮,然后显示该按钮的弹出框
SUDO代码:
if (sourceType == UIImagePickerControllerSourceTypePhotoLibrary) {
[self.popover presentPopoverFromRect:_openLibraryButton.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
} else {
[self.popover presentPopoverFromRect:_takeFromCamera.frame inView:self.view permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
看起来您正在强制它始终使用库中的
frame[self.popover presentpopoverfromrrect:_openLibraryButton.frame-inView:self.view-permittedrowdirections:uipoperrowdirection任何动画:YES]代码>侧注-不要在弹出式沙发中显示相机。只为照片库使用popover。嗨,机器人,我如何添加检查部分?你有我可以使用的例子吗?@DaveBradford你可以检查你在内部传递的源类型-工作完美,非常感谢!标记为已接受!