Xamarin IOS 文件选择器卡住了
Xamarin IOS filepicker stuck
我正在使用 xamarin.plugin.filepicker
与 android 配合使用效果很好。但是 IOS (iPhone 6+) 它不起作用。
一旦出现此代码:
var file = await CrossFilePicker.Current.PickFile();
它卡住了,没有继续,应用程序没有释放,它工作正常,但没有从 "await CrossFilePicker.Current.PickFile();" 得到任何结果。
即使我点击 "cancel" 或 select 一个文件,也没有让代码在这一行之后:
var file = await CrossFilePicker.Current.PickFile();
没有错误,什么都没有。
我用的是最新的稳定版插件,然后我也试了“2.1.14-beta”。
问题是:为什么代码永远不会转到 "if (file != null)" 语句?
var file = await CrossFilePicker.Current.PickFile(); << Stop here
if (file != null) << Not come here ever
提前致谢
我无法发表评论...您是否在 Info.plist 中的 IOS 上设置了访问图书馆的权限?
<key>NSCameraUsageDescription</key>
<string>This app needs access to the camera to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to photos.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app needs access to microphone.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to the photo gallery.</string>
终于解决了问题
我正在使用 javascript 回调来触发文件选择器事件。问题出在 html 代码中,如您所见,我使用了 "a" 对象:
<a href="#"
onclick="UploadImage();"
style="text-decoration:none;" data-ajax="false" data-role="none">
</a>
它可以在 android 上找到,但卡在 IOS 上。我注意到 (href="#") 使用 IOS 触发了“FormswebView_OnNavigationStarted
”事件。这使得两个事件同时触发,FormswebView_OnNavigationStarted
+ 我的 javascript 回调 (ShowUploadAppImagesAsync
)。这就是为什么它卡在那里而没有到达下一行的原因。
一旦我将 "a" 对象更改为 "div" 对象,它就可以正常工作了。
<div
onclick="UploadImage();"
style="text-decoration:none;" data-ajax="false" data-role="none">
</div>
希望对大家有所帮助
感谢 "TosT" 和 "Jack Hua - MSFT"
此致
我正在使用 xamarin.plugin.filepicker
与 android 配合使用效果很好。但是 IOS (iPhone 6+) 它不起作用。
一旦出现此代码:
var file = await CrossFilePicker.Current.PickFile();
它卡住了,没有继续,应用程序没有释放,它工作正常,但没有从 "await CrossFilePicker.Current.PickFile();" 得到任何结果。
即使我点击 "cancel" 或 select 一个文件,也没有让代码在这一行之后:
var file = await CrossFilePicker.Current.PickFile();
没有错误,什么都没有。
我用的是最新的稳定版插件,然后我也试了“2.1.14-beta”。
问题是:为什么代码永远不会转到 "if (file != null)" 语句?
var file = await CrossFilePicker.Current.PickFile(); << Stop here
if (file != null) << Not come here ever
提前致谢
我无法发表评论...您是否在 Info.plist 中的 IOS 上设置了访问图书馆的权限?
<key>NSCameraUsageDescription</key>
<string>This app needs access to the camera to take photos.</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>This app needs access to photos.</string>
<key>NSMicrophoneUsageDescription</key>
<string>This app needs access to microphone.</string>
<key>NSPhotoLibraryAddUsageDescription</key>
<string>This app needs access to the photo gallery.</string>
终于解决了问题
我正在使用 javascript 回调来触发文件选择器事件。问题出在 html 代码中,如您所见,我使用了 "a" 对象:
<a href="#"
onclick="UploadImage();"
style="text-decoration:none;" data-ajax="false" data-role="none">
</a>
它可以在 android 上找到,但卡在 IOS 上。我注意到 (href="#") 使用 IOS 触发了“FormswebView_OnNavigationStarted
”事件。这使得两个事件同时触发,FormswebView_OnNavigationStarted
+ 我的 javascript 回调 (ShowUploadAppImagesAsync
)。这就是为什么它卡在那里而没有到达下一行的原因。
一旦我将 "a" 对象更改为 "div" 对象,它就可以正常工作了。
<div
onclick="UploadImage();"
style="text-decoration:none;" data-ajax="false" data-role="none">
</div>
希望对大家有所帮助
感谢 "TosT" 和 "Jack Hua - MSFT"
此致