【问题标题】:UIImagePickerController inside UIPopoverController doesn't show Cancel button on iOS7UIPopoverController 内的 UIImagePickerController 在 iOS7 上不显示取消按钮
【发布时间】:2014-11-14 03:35:23
【问题描述】:

我在 UIPopoverController 中使用 UIImagePickerController 仅从相册中选择图像。当我在运行 iOS 8 的设备上启动应用程序时,弹出窗口右上角的取消按钮通常如下所示:

但是当我在运行 iOS 7 的设备上启动应用程序时,取消按钮消失了:

我用来显示选择器的代码:

    UIImagePickerController *pickerController = [[UIImagePickerController alloc] init];
    [pickerController setSourceType:UIImagePickerControllerSourceTypePhotoLibrary];
    pickerController.delegate = self;

    _popOver = [[UIPopoverController alloc] initWithContentViewController:pickerController];
    _popOver.delegate = self;

    pickerController.navigationBar.tintColor = [UIColor redColor];//Cancel button text color
    [pickerController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor blackColor]}];// title color

    if (isImage) {
        [pickerController setMediaTypes:@[(NSString*)kUTTypeImage]];
    } else
        [pickerController setMediaTypes:@[(NSString*)kUTTypeMovie]];
    [_popOver presentPopoverFromRect:CGRectMake(1024/2, 768/2, 1, 1) inView:self.view permittedArrowDirections:0 animated:YES];

如何在 iOS7 上显示取消按钮?我的应用设计不允许用户通过点击弹出框视图之外的任何位置来关闭弹出框。

谢谢。

【问题讨论】:

  • 你能告诉我相关的代码吗?
  • iOS8默认出现取消按钮
  • @SureshToutam 是的。但是我也可以在 iOS7 上展示它吗?
  • 您不需要取消按钮。用户只需在弹出框外点击即可将其关闭。
  • @rmaddy 是的,我知道。但我的应用设计不允许用户以通常的方式关闭弹出框。

标签: ios ios7 ios8 uiimagepickercontroller uipopovercontroller


【解决方案1】:

@JozoL 编写下面的代码这行得通

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated {

        UINavigationItem *pickerNavBarTopItem;
        // add done button to right side of nav bar
        UIBarButtonItem *doneButton = [[UIBarButtonItem alloc] initWithTitle:@"Cancel"
                                                                       style:UIBarButtonItemStylePlain
                                                                      target:self
                                                                      action:@selector(doSomething)];

        UINavigationBar *bar = navigationController.navigationBar;
        [bar setHidden:NO];
        pickerNavBarTopItem = bar.topItem;
        pickerNavBarTopItem.rightBarButtonItem = doneButton;
    }
    -(void)doSomething{

    }

【讨论】:

  • 谢谢。它奏效了。还有一件事,当我选择专辑时,取消按钮仍然消失,但在 iOS8 上却没有。你知道为什么吗?你能解释一下这个案例吗?
【解决方案2】:

对于 swift2.x 你可以试试下面的代码,它对我有用

pickerController.navigationBar.tintColor = UIColor.blueColor()

【讨论】:

    【解决方案3】:

    就我而言,UIImagePickerController 没有显示其取消按钮 .所以我尝试将这一行添加到代码中:

    pickerController.navigationBar.barStyle = UIBarStyleDefault;
    

    这对我有用。尝试像这样设置取消按钮的颜色

     pickerController.navigationBar.tintColor = [UIColor blackColor];
    

    尝试使用此代码,如果对您有帮助,请告诉我。

    【讨论】:

    • 我用过这个但是没用。 Suresh 的解决方案对我有用。
    猜你喜欢
    • 1970-01-01
    • 2015-04-10
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-25
    • 2012-05-14
    相关资源
    最近更新 更多