here on sourceforge에서 다운로드 한 ZBarMonotouchBinding의 v2를 사용하고 있습니다. 이 버전에는 libzbar.a 파일이 없었기 때문에 바인딩의 v1에서 libzbar.a 파일을 사용하고 있습니다. (이 파일이 내 문제의 원인 일 수 있습니다.). 바인딩을 다운로드 한 후 컴파일하고 ZBar.dll 참조를 샘플 프로그램에 추가했습니다.심볼 데이터를 반환 할 때 ZBarMonotouchBinding 오류가 발생했습니다.
내 샘플 앱의 대리인을 위해 here on stackoverflow 코드를 사용하고 있습니다.
샘플 앱에는 스캐너가 표시되고 바코드를 인식하는 데 아무런 문제가 없지만 바코드를 인식하고 심볼 데이터를 위임자에게 반환하는 즉시이 코드가없는 대신 예외가 발생합니다 대리인의 FinishedPickingMedia 이벤트를 호출는 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
보인다, 그러나 그것은 작동하는 것으로 알려졌다 코드를 빌려 이후로 나는 코딩 문제를 생각하지 않습니다. 이런 경우에 여기에 내가 사용하고 소스 코드는 다음과 같습니다
컨트롤러 :
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를 참조 할 코드 샘플은 많지 않습니다.