【发布时间】:2017-09-30 15:10:42
【问题描述】:
我正在开发一个针对 Android 和 iOS 的 Xamarin Forms PCL 项目,该项目需要一些基本的条形码扫描功能。
我在this tutorial 和引用this guide 之后使用ZXing.Net.Mobile 包的表单版本启动并运行它,它在Android 上运行良好。然而,在 iOS 上,相机会出现,但不会触发 OnScanResult 事件。
我已经在运行几个不同版本(从 8.0 到 10.3 的任何地方)的几台 iOS 设备上对其进行了测试,并摆弄了我能想到的一切,还参考了他们的示例项目。 ZXing.Net.Mobile 和 ZXing.Net.Mobile.Forms nuget 包已安装在所有项目中。
这是我的扫描仪代码,由我主页上的按钮触发:
var scanPage = new ZXingScannerPage();
scanPage.OnScanResult += (result) =>
{
scanPage.IsScanning = false;
Device.BeginInvokeOnMainThread(async () =>
{
await Navigation.PopAsync();
await DisplayAlert("Scanned Barcode", result.Text, "OK");
});
};
await Navigation.PushAsync(scanPage);
和 AppDelegate.cs:
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
global::ZXing.Net.Mobile.Forms.iOS.Platform.Init();
LoadApplication(new App());
return base.FinishedLaunching(app, options);
}
经过两天的斗争,我觉得自己已经无计可施了。有没有其他人遇到过类似的问题?感谢您的指导!
编辑 1
这是单击按钮触发上述代码时的设备日志输出(仅限消息列)。当相机打开并指向各种条形码时,不会添加任何日志项目。我在这里没有看到任何可疑之处,但也许其他人看到了?
- PERF:Alloc AVCaptureVideoPreviewLayer 耗时 14.14 毫秒。
- AppleH4CamIn::power_on_hardware
- AppleH4CamIn::ISP_SelectBestMIPIFrequencyIndex_gated - 通道:0,索引:0
- 开始扫描
- AppleH4CamIn::setPowerStateGated: 1
- ZXingScannerView.Setup() 耗时 0.167 毫秒。
- ASL 发件人统计数据
- AppleH4CamIn::ISP_FlushInactiveDARTMappings: 0x00000000
- AppleH4CamIn::ISP_SelectBestMIPIFrequencyIndex_gated - 通道:0,索引:0
编辑 2
我从github repo 运行了示例 Xamarin Forms PCL,并且在 iOS 上遇到了同样的问题,相机可以正常打开,但从未读取过条形码。因此,我认为问题一定出在我的 Visual Studio 和/或 Xamarin 设置上。我在稳定的 Xamarin 频道上运行 Visual Studio 2015 Community。
【问题讨论】:
-
您实际上是在使用调试器来验证 OnScanResult 没有被调用,还是仅仅依靠警报/导航告诉您?
-
我已经完成了它,但我没有看到它被调用。我还在设备运行时显示设备日志,一切看起来都很好,没有错误触发。
标签: ios xamarin.forms zxing