【问题标题】:ZBarMonotouchBinding Error When Returning Symbol Data返回符号数据时 ZBarMonotouchBinding 错误
【发布时间】:2013-02-12 00:21:18
【问题描述】:

我正在使用从here on sourceforge 下载的 ZBarMonotouchBinding v2。这个版本没有附带 libzbar.a 文件,所以我使用的是绑定 v1 中的 libzbar.a 文件(这可能是我的问题的根源??)。下载绑定后,我编译并添加了 ZBar.dll 引用到我的示例应用程序。

对于我的示例应用程序中的委托,我使用的是我找到的代码 here on stackoverflow

示例应用程序在显示扫描仪并让它识别条形码时没有问题,但是一旦它识别出条形码并想要将符号数据返回给代理,我就会得到这个异常而不是让它调用委托中的 FinishedPickingMedia 事件:

Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[ZBar.ZBarReaderViewController+_ZBarReaderDelegate imagePickerController:didFinishPickingMediaWithInfo:]: unrecognized selector sent to instance 
0xe2a130

MonoTouch.Foundation.MonoTouchException: Objective-C exception thrown.  Name: NSInvalidArgumentException Reason: -[ZBar.ZBarReaderViewController+_ZBarReaderDelegate imagePickerController:didFinishPickingMediaWithInfo:]: unrecognized selector sent to instance 0xe2a130
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args, System.String principalClassName, System.String delegateClassName) [0x0004c] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:38
  at MonoTouch.UIKit.UIApplication.Main (System.String[] args) [0x00000] in /Developer/MonoTouch/Source/monotouch/src/UIKit/UIApplication.cs:43
  at Scanner.Application.Main (System.String[] args) [0x00000] in /Users/user/Projects/sample/scanner/Main.cs:16

似乎没有找到 FinishedPickingMedia 事件,但由于它是据说可以工作的借用代码,我认为这不是编码问题。以防万一这是我正在使用的源代码:

控制器:

public class ScannerViewController : ZBarReaderViewController
    {
        public ScannerViewController ()
        {
            this.SupportedOrientations = ZBarOrientation.All;
            this.ShowBarcodeTracker = true;
            this.ShowsZBarControls = true;
            this.ReaderDelegate = new zScannerDelegate();
        }

}

代表:

public class zScannerDelegate : ZBarReaderDelegate
    {
        public delegate void ScanResult(string scanstrring);
        public event ScanResult ScannedCode;
        public zScannerDelegate ()
        {
        }
        public override void FinishedPickingMedia (UIImagePickerController picker, NSDictionary info)
        {

            ZBarSymbolSet result = null;

            string retstr = string.Empty;
            foreach (var sresult in info.Values) {
                if (sresult is ZBarSymbolSet) {
                    result = sresult as ZBarSymbolSet;
                    break;
                }
            }
            if (result != null) {
                foreach (var itema in result) {
                    Console.WriteLine (itema.Data);
                    retstr = itema.Data;
                    ScanResult ret = ScannedCode;
                    if (ret != null)
                        ret(retstr);
                }
            }
        }

    }

可能是我不得不从绑定的 v1 借用的 libzar.a 文件导致了问题吗?知道在哪里可以获得 libzar.a 文件的更新版本,或者我可以做些什么来尝试解决这个错误?

我研究了一整天,但遗憾的是没有很多代码示例可供 ZBar 和 Monotouch 参考。

【问题讨论】:

    标签: binding xamarin.ios runtime-error zbar


    【解决方案1】:

    我不能 100% 确定您的代码具体出了什么问题,我觉得它看起来不错。
    但是这些绑定的最新版本(以及示例应用程序)现在托管在 github 上,地址为 https://github.com/Its-Tyson/MonoTouch.ZBar

    `libzbar.a' 是被包装的实际 iPhone ZBar SDK 库。您可以从http://zbar.sourceforge.net/iphone/ 获得最新版本(尽管它已经在 v1.2 上使用了很长一段时间,而且我相信您在 V1 绑定中获得的压缩版本将完全相同,所以我怀疑这是源你的问题。)

    【讨论】:

      猜你喜欢
      • 2017-11-14
      • 1970-01-01
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-16
      • 2021-09-20
      相关资源
      最近更新 更多