iOS上的Xamarin Forms中的ZXing条形码扫描器不读取条形码

时间:2017-05-02 23:57:50

标签: ios xamarin.forms zxing

我正在开发一个针对Android和iOS的Xamarin Forms PCL项目,该项目需要一些基本的条形码扫描功能。

我在ZXing.Net.Mobile之后使用this tutorial包的表单版本并引用了this guide,并在Android上运行良好。但是,在iOS上相机出现但OnScanResult事件从未被触发。

我在几个运行几个不同版本(从8.0到10.3的任何地方)的iOS设备上进行了测试,并摆弄了我能想到的一切,并参考了他们的示例项目。所有项目都安装了ZXing.Net.MobileZXing.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
  • StartScanning
  • 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社区。

4 个答案:

答案 0 :(得分:0)

add this on ios

protected override void OnAppearing()
        {
            base.OnAppearing();
            qrcode.IsScanning = true;
        }`enter code here`

        protected override void OnDisappearing()
        {
            qrcode.IsScanning = false;
            base.OnDisappearing();

        }

答案 1 :(得分:0)

我终于以this project作为起点。这只是使用ZXing的基本条形码扫描实现,但无论出于何种原因,我终于可以在iOS上阅读条形码。

这可能与版本相关,但我无法缩小范围。

修改

我在Xamarin论坛中发布了同样的问题:https://forums.xamarin.com/discussion/comment/272209#Comment_272209

似乎答案是降级到ZXing版本2.1.47。我几个月没有对图书馆做过任何工作,所以我没有测试新版本。

答案 2 :(得分:0)

尝试使用:

scanPage.IsAnalyzing = true;

答案 3 :(得分:-1)

IsAnalyzingIsScanning不同。

我遇到了和你一样的问题。但在使用IsAnalyzing = true;之后它已修复。