UIDocumentPickerViewController按钮看起来已禁用但工作 - 为什么?

时间:2018-02-10 01:08:45

标签: ios uidocumentpickervc files-app

我正在使用UIDocumentPickerViewController将图像导出到iOS 11中的Files应用程序。选择器出现了,我可以为文件选择目标。我收到文件被移动的回调,我可以在文件中看到它们,所以看起来工作正常。但是,UI是错误的 - 添加和取消按钮看起来已禁用,但它们实际上工作正常。如果我只使用共享表中的保存到文件,按钮看起来不会这样。

这是我的代码:

UIDocumentPickerViewController *docPicker = 
[[UIDocumentPickerViewController alloc] initWithURLs:self.assetURLs inMode:UIDocumentPickerModeExportToService];

docPicker.delegate = self;
[vc presentViewController:docPicker animated:YES completion:nil];

我尝试过的事情:
1)我尝试了移动和导出类型
2)我启用了iCloud功能(所有三个项目:键值,文档和CloudKit) - 没有经验上的差异[事实上,即使没有这些设置,代码也能正常工作,尽管文档另有说法])

以下是UI的外观截图。正如您所看到的,用户界面表示它会将项目添加到所选目录中(事实上,如果我点击添加,则会这样做):

enter image description here

任何人都知道如何让按钮显示为蓝色并显示启用状态?我没有在网上找到任何可以尝试的示例代码 - 如果有人有指针,我可以尝试查看它是否与我的配置或代码有关。

2 个答案:

答案 0 :(得分:2)

我不是像批准的答案中建议的那样暂时改变全球外观的忠实粉丝。你可以重置UIDocumentPickerViewController的外观,条形按钮将恢复原来的蓝色。

if #available(iOS 11.0, *) {
    UINavigationBar.appearance(whenContainedInInstancesOf: [UIDocumentBrowserViewController.self]).tintColor = nil
}

答案 1 :(得分:1)

根据您的评论,您的应用正在使用tintColor设置UINavigationBar.appearance。这将影响所有导航栏,包括系统导航控制器,例如UIDocumentPickerViewController

我已经在自己的应用程序中处理了这个问题。一种解决方案是子类UIDocumentPickerViewController并在需要选择器视图的任何地方使用您的子类。在您的子类中,覆盖viewDidLoad并将UINavigationBar.appearance.tintColor设置回nil。并覆盖viewWillDisappear以将UINavigationBar.appearance.tintColor重置为所需的颜色。