gpt4 book ai didi

xamarin.forms - Xamarin.iOS UIDocumentPickerViewController

转载 作者:行者123 更新时间:2023-12-05 04:04:46 24 4
gpt4 key购买 nike

我有一个关于 iOS 文档选择器的问题。

我已经包含 iCloud 容器/为我们的配置启用了 iCloud。还添加了所需的 Cloudkit Xamarin.iOS 本身的要求。但是,我在启动弹出菜单以显示 iOS 的浏览文件菜单时遇到问题。

var documentPicker = new UIDocumentPickerViewController(allowedUtis, UIDocumentPickerMode.Import);

documentPicker.DidPickDocument += DocumentPicker_DidPickDocument;
documentPicker.WasCancelled += DocumentPicker_WasCancelled;
documentPicker.DidPickDocumentAtUrls += DocumentPicker_DidPickDocumentAtUrls;
documentPicker.WasCancelled += DocumentPicker_WasCancelled;

private void DocumentPicker_DidPickDocumentAtUrls(object sender, UIDocumentPickedAtUrlsEventArgs e)
{
var control = (UIDocumentPickerViewController)sender;
foreach (var url in e.Urls)
DocumentPicker_DidPickDocument(control, new UIDocumentPickedEventArgs(url));

control.Dispose();
}

DidPickDocument/DidPickDocumentAtUrls 事件似乎无法启动,除了设置我的供应、权利、info.plist 之外,是否还有任何需要的选项/权限让我使用 iOS 的文档选择器?

最佳答案

好吧,我最近做了它,它在我的 xamarin 表单应用程序中运行良好:

private void ShowDocsPicker()
{
try
{
var docPicker = new UIDocumentPickerViewController(new string[]
{ UTType.Data, UTType.Content }, UIDocumentPickerMode.Import);
docPicker.WasCancelled += DocPicker_WasCancelled;
docPicker.DidPickDocumentAtUrls += DocPicker_DidPickDocumentAtUrls;
var _currentViewController = GetCurrentUIController();
if (_currentViewController != null)
_currentViewController.PresentViewController(docPicker, true, null);
}
catch (Exception ex)
{
//Exception Logging
}
}

像这样获取当前的 UIViewController :

  public UIViewController GetCurrentUIController()
{
UIViewController viewController;
var window = UIApplication.SharedApplication.KeyWindow;
if (window == null)
{
return null;
}

if (window.RootViewController.PresentedViewController == null)
{
window = UIApplication.SharedApplication.Windows
.First(i => i.RootViewController != null &&
i.RootViewController.GetType().FullName
.Contains(typeof(Xamarin.Forms.Platform.iOS.Platform).FullName));
}

viewController = window.RootViewController;

while (viewController.PresentedViewController != null)
{
viewController = viewController.PresentedViewController;
}

return viewController;
}

然后像这样添加文档选择事件:

 private void DocPicker_DidPickDocumentAtUrls(object sender, UIDocumentPickedAtUrlsEventArgs e)
{
//Action to perform on document pick
}

如有疑问,请回复。

关于xamarin.forms - Xamarin.iOS UIDocumentPickerViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52051165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com