Xamarin表单中的UIDocumentPickerViewController选择
我一直在努力让我的文档采集器充分工作。现在它显示视图控制器,但我不知道如何等待或获得结果 在swift中,您只需编写Xamarin表单中的UIDocumentPickerViewController选择,xamarin,xamarin.ios,xamarin.forms,uidocumentpickervc,Xamarin,Xamarin.ios,Xamarin.forms,Uidocumentpickervc,我一直在努力让我的文档采集器充分工作。现在它显示视图控制器,但我不知道如何等待或获得结果 在swift中,您只需编写void documentPicker(UIDocumentPickerViewController控制器,didPickDocumentTurl…方法,完成后将转到那里 但是在Xamarin中,它一定不是那么简单。我已经从调用它的类、在我的AppDelegate.cs类以及在我的Main.cs类中编写了该方法。除非我写错了,否则没有一个方法是有效的 我所拥有的是 public a
void documentPicker(UIDocumentPickerViewController控制器,didPickDocumentTurl…
方法,完成后将转到那里
但是在Xamarin中,它一定不是那么简单。我已经从调用它的类、在我的AppDelegate.cs
类以及在我的Main.cs
类中编写了该方法。除非我写错了,否则没有一个方法是有效的
我所拥有的是
public async Task<string> pickResume()
{
string path = string.Empty;
var controller = new UIViewController();
var docVC = new UIDocumentPickerViewController(new string[] { "org.openxmlformats.wordprocessingml.document", "com.microsoft.word.doc" }, UIDocumentPickerMode.Import);
UIViewController topController = getTopViewController();
topController.PresentViewController(docVC, true, null);
return path;
}
void documentPicker(UIDocumentPickerViewController controller, NSUrl didPickDocumentAtURL)
{
Console.WriteLine("done");
}
公共异步任务pickResume()
{
字符串路径=string.Empty;
var controller=新的UIViewController();
var docVC=新的UIDocumentPickerWebController(新字符串[]{“org.openxmlformats.wordprocessingml.document”,“com.microsoft.word.doc”},UIDocumentPickerMode.Import);
UIViewController-topController=getTopViewController();
topController.PresentViewController(docVC,true,null);
返回路径;
}
无效文档选择器(UIDocumentPickerViewController控制器,NSUrl DIDPickDocumentTurl)
{
控制台。写入线(“完成”);
}
getTopViewController()
只是获取俯视图控制器的一个辅助方法,这样我就可以向DocumentPicker演示它了,而且比我想象的要简单得多
UIDocumentPickerViewController
有两个eventhandler
,DidPickDocument
和被取消
,所以我只是将它们分配给两个不同的方法并完成了
public async Task<string> pickResume()
{
string path = string.Empty;
var controller = new UIViewController();
var docVC = new UIDocumentPickerViewController(new string[] { "org.openxmlformats.wordprocessingml.document", "com.microsoft.word.doc" }, UIDocumentPickerMode.Import);
docVC.DidPickDocument += DocVC_DidPickDocument;
docVC.WasCancelled += DocVC_WasCancelled;
UIViewController topController = getTopViewController();
topController.PresentViewController(docVC, true, null);
return await GetDocPath(new CancellationTokenSource());
}
private void DocVC_WasCancelled(object sender, EventArgs e)
{
//Handle being cancelled
}
private void DocVC_DidPickDocument(object sender, UIDocumentPickedEventArgs e)
{
//Handle document selection
}
公共异步任务pickResume()
{
字符串路径=string.Empty;
var controller=新的UIViewController();
var docVC=新的UIDocumentPickerWebController(新字符串[]{“org.openxmlformats.wordprocessingml.document”,“com.microsoft.word.doc”},UIDocumentPickerMode.Import);
docVC.DidPickDocument+=docVC\u DidPickDocument;
docVC.wascelected+=docVC\u wascelected;
UIViewController-topController=getTopViewController();
topController.PresentViewController(docVC,true,null);
返回等待GetDocPath(新的CancellationTokenSource());
}
私有void DocVC_已取消(对象发送方,事件参数e)
{
//处理被取消
}
私有void DocVC_DidPickDocument(对象发送方,UIDocumentPickedEventArgs e)
{
//处理文档选择
}
找到了答案,这比我想象的要容易得多
UIDocumentPickerViewController
有两个eventhandler
,DidPickDocument
和被取消
,所以我只是将它们分配给两个不同的方法并完成了
public async Task<string> pickResume()
{
string path = string.Empty;
var controller = new UIViewController();
var docVC = new UIDocumentPickerViewController(new string[] { "org.openxmlformats.wordprocessingml.document", "com.microsoft.word.doc" }, UIDocumentPickerMode.Import);
docVC.DidPickDocument += DocVC_DidPickDocument;
docVC.WasCancelled += DocVC_WasCancelled;
UIViewController topController = getTopViewController();
topController.PresentViewController(docVC, true, null);
return await GetDocPath(new CancellationTokenSource());
}
private void DocVC_WasCancelled(object sender, EventArgs e)
{
//Handle being cancelled
}
private void DocVC_DidPickDocument(object sender, UIDocumentPickedEventArgs e)
{
//Handle document selection
}
公共异步任务pickResume()
{
字符串路径=string.Empty;
var controller=新的UIViewController();
var docVC=新的UIDocumentPickerWebController(新字符串[]{“org.openxmlformats.wordprocessingml.document”,“com.microsoft.word.doc”},UIDocumentPickerMode.Import);
docVC.DidPickDocument+=docVC\u DidPickDocument;
docVC.wascelected+=docVC\u wascelected;
UIViewController-topController=getTopViewController();
topController.PresentViewController(docVC,true,null);
返回等待GetDocPath(新的CancellationTokenSource());
}
私有void DocVC_已取消(对象发送方,事件参数e)
{
//处理被取消
}
私有void DocVC_DidPickDocument(对象发送方,UIDocumentPickedEventArgs e)
{
//处理文档选择
}
在我的情况下,我也必须订阅didpickdocumentals
。出于某种原因,DidPickDocument
从未被调用,即使我把AllowsMultipleSelection=false
放在我的情况下,我也必须订阅didpickdocumentals
。出于某种原因,DidPickDocument
从未被调用过如果我输入AllowsMultipleSelection=false