首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ZXing.Net背导航C#

ZXing.Net背导航C#
EN

Stack Overflow用户
提问于 2017-04-24 20:01:58
回答 3查看 2K关注 0票数 1

我正在使用ZXing.Net相机条形码扫描仪,xamarin表单和C#,它看起来很好。但是我有一个问题,如果我通过Navigation.PushAsync()进入下一页,然后单击Back导航按钮,ZXingScannerPage摄像机将不会重新加载.(它将只是最后一张照片的静止图像)...how是否重新加载ZXingScannerPage以便相机在按下Back导航时处于活动状态?是否要刷新附在页面上的相机视图?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-05-04 15:02:27

我发现的允许使用ZXing扫描页进行回显导航的解决方案是,在将页面的新实例推送到导航堆栈之前,删除ZXing扫描页的所有实例。在您的navigation.cs中,当您准备推送页面时,请使用以下命令:

代码语言:javascript
复制
        foreach(var x in _navigation.Navigation.NavigationStack.ToList())
        {
          if((x.GetType() == typeof(/* name of your scanner page */)))
          {
            _navigation.Navigation.RemovePage(x);
          }
        }
        var page = new /* your scanner page */();
        _navigation.PushAsync( /* your scanner page */);
票数 0
EN

Stack Overflow用户

发布于 2017-04-25 00:03:25

使用以下代码。扫描完成后立即停止扫描。别做手工操作。

代码语言:javascript
复制
    Entry objScanner= new Entry();
                    objScanner.Placeholder = "Barcode";
                    objScanner.Keyboard = Keyboard.Numeric;
                    objScanner.HorizontalOptions = LayoutOptions.StartAndExpand;
                    objScanner.WidthRequest = Application.Current.MainPage.Width - 40;



                    objScanner.SetBinding(Entry.TextProperty, "ElementValue", BindingMode.TwoWay);
                    objScanner.BindingContext = control;


                    layout.Children.Add(objScanner);

                    objScanner.Focused +=  async (s, e) =>
                    {
                        var scanPage = new ZXingScannerPage();
                        await Navigation.PushAsync(scanPage);

                        scanPage.OnScanResult += (result) =>
                            {
                                // Stop scanning
                                scanPage.IsScanning = false;

                                // Pop the page and show the result
                                Device.BeginInvokeOnMainThread(async () =>
                               {
                                   await Navigation.PopAsync();
                                   objScanner.Text = result.Text;
                                  // await DisplayAlert("Scanned Barcode", result.Text, "OK");
                               });
                            };
                    };
票数 1
EN

Stack Overflow用户

发布于 2019-09-10 04:15:41

我找到了一个可能有用的解决办法。在内容页上,创建一个本地内容变量。如果我实例化扫描仪并将它添加到OnAppearing方法中的内容中,那么设置Content = null OnDisappearing方法。取消内容似乎会触发堆栈上必要的清理。

这是我的密码:

代码语言:javascript
复制
public class QrCodeScanPage : ZXingScannerPage
{
    View _content;
    public QrCodeScanPage()
    {
        InitScanner();
    }

    void InitScanner()
    {
        IsAnalyzing = true;
        IsScanning = true;
        DefaultOverlayTopText = "Align the barcode within the frame";
        DefaultOverlayBottomText = string.Empty;

        OnScanResult += ScanPage_OnScanResult;

        Title = "Scan Code";

        var item = new ToolbarItem
        {
            Text = "Cancel",
            Command = new Command(async () =>
            {
                IsScanning = false;
                await Navigation.PopAsync();
            })
        };
        if (Device.RuntimePlatform != Device.iOS)
            item.IconImageSource = "toolbar_close.png";

        ToolbarItems.Add(item);
    }

    void ScanPage_OnScanResult(ZXing.Result result)
    {
        Device.BeginInvokeOnMainThread(async () =>
        {
            IsScanning = false;
            IsAnalyzing = false;
            await Navigation.PushAsync(new QrCodeScanResultPage());
        });
    }

    protected override void OnAppearing()
    {
        IsScanning = true;
        IsAnalyzing = true;
        base.OnAppearing();
        if (Content != null)
        {
            _content = Content;
        }
        if (Content == null)
        {
            Content = _content;
        }
    }

    protected override void OnDisappearing()
    {
        base.OnDisappearing();
        Content = null;
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43596760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档