单击并打开 ipad 的相机时出现 uipopover 问题

Posted

技术标签:

【中文标题】单击并打开 ipad 的相机时出现 uipopover 问题【英文标题】:uipopover issues while click and open the camera for ipad 【发布时间】:2012-07-25 09:36:26 【问题描述】:

我在点击并打开 ipad 相机时遇到了 popoverview 问题,我编写了这样的代码

-(IBAction)business_takephotobtnClicked   // click the button show the popoverview

 

NSLog(@"business_takephotobtnClicked");
    appdelegate.takePhoto=2;

    popover = [[UIPopoverController alloc] 
               initWithContentViewController:imgclass];

    popover.popoverContentSize =  CGSizeMake(138,66);
    [popover presentPopoverFromRect:popbtn_business.bounds inView:popbtn_business 
    permittedArrowDirections:UIPopoverArrowDirectionUp + 
    UIPopoverArrowDirectionLeft 
    animated:YES]; 






-(IBAction) takePhoto:(id)sender // to open the camera






    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera]) 
    

       self.contentSizeForViewInPopover=CGSizeMake(138,66);




        UIPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:self.UIPicker animated:YES];

    
    else 
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Camera is not available" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
        [alert show];
        [alert release];


    


在点击按钮之前,弹出框像这样显示

点击拍照时(印楝照片按钮)。弹出窗口大小自动扩展,如 taht

但我在打开相机时也需要相同大小的弹出视图

提前致谢......

【问题讨论】:

查看此链接:-***.com/questions/3458722/… 【参考方案1】:

而不是使用 XIB 使用以编程方式创建相机视图并执行以下操作

-(IBAction)popbtn_Click:(id)sender

    UIViewController* popoverContent = [[UIViewController alloc] init];
    UIView* popoverView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 230, 180)];
    popoverView.backgroundColor = [UIColor whiteColor];

    take_btn=[UIButton buttonWithType:UIButtonTypeRoundedRect];
    [take_btn setTitle:@"Take" forState:UIControlStateNormal];
    take_btn.frame=CGRectMake(2,2, 250, 60);
    [take_btn addTarget:self action:@selector(take_btnclick:) forControlEvents:UIControlEventTouchUpInside];
    [popoverView addSubview:take_btn];


-(void)take_btnclick:(id)sender

    [popoverController dismissPopoverAnimated:YES];

    if ([UIImagePickerController isSourceTypeAvailable:UIImagePickerControllerSourceTypeCamera])
    
        UIPicker.sourceType = UIImagePickerControllerSourceTypeCamera;
        [self presentModalViewController:self.UIPicker animated:YES];

        [popoverController dismissPopoverAnimated:YES];
    
    else 
        UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"Camera is not available" delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:nil];
        [alert show];
        [alert release];
    

    if (popoverController != nil)
    
        [popoverController dismissPopoverAnimated:YES];
    

【讨论】:

以上是关于单击并打开 ipad 的相机时出现 uipopover 问题的主要内容,如果未能解决你的问题,请参考以下文章

iPad键盘分裂时调整UIPopover

UIPopOver 和方向改变

收到内存警告。带 ipad 相机

在 iPad 中启用相机限制会在打开相机时引发 NSException

在 iPad 中居中 uipopover

当模态视图可见且 iPad 旋转时,UIPopover 的内容会更改为随机方向