2012-07-31 3 views
0

내 아이폰 앱의 백그라운드에서 ZXing 라이브러리를 사용하고 qr 코드를 스캔 할 수 있습니까? qr 코드와 취소 버튼을 찾는 사각형으로 카메라를 겹치게하고 싶지는 않습니다 (ScanTest 예제에서 볼 수 있듯이). 필요한 것은 스캔 버튼을 누르면 QR 코드를 읽을 수 있고, QR 코드를 읽으면 텍스트를 내 응용 프로그램에 어떻게 반환 할 수 있습니까? 그러면 화면의 UILabel에 표시 할 수 있습니다.아이폰 용 Zxing 라이브러리

누구나 Objective-C에 예제 코드를 표시 할 수 있습니까? 감사.

답변

1

나는 비슷한 것을했고 약간의 지침을 제공 할 수 있지만 소스 코드를 공유 할 수는 없습니다.

ZXingWidgetController.mm, .h 파일을 살펴보십시오. 이것은 컴파일 할 수있는 완전히 기능하는 QRcode 스캐닝 응용 프로그램이므로 백엔드 코드 만 포함하도록 리버스 엔지니어링 할 수 있습니다. 클래스가 UIViewController 대신 NSObject를 확장하도록 .h를 편집 한 다음 GUI 객체 인 모든 클래스 속성 및 인스턴스 변수를 삭제합니다.

그러면 xcode가 더 이상 필요하지 않은 모든 메서드와 변수를 .mm 파일에서 경고/오류로 찾아서 표시합니다 (willAppear 등). 이 코드의 대부분은 삭제할 수 있지만 할당 자/할당 해제자를 생성자/해체 자로 옮기는 데주의해야합니다.

viewController에서이 클래스의 인스턴스를 만들고 클래스를 호출하여 검색을 시작할 수 있습니다. ZXingWidgetController.mm 파일의 didDecodeImage를 수정하여 QR 코드의 결과를 성공적으로 얻을 때 수행 할 작업을 수행해야합니다. 하나의 가능성은 상위 뷰 컨트롤러를 매개 변수로 사용하도록 생성자를 수정하고 인스턴스 변수에 위임자 (__weak)로 저장 한 다음이를 사용하여 didDecodeImage 메서드에서 해당 함수 중 하나를 호출하는 것입니다. 다른 사람들은 알림을 사용하여 데이터를 주 코드로 다시 전달할 수 있습니다.

희망이 도움이됩니다.

+0

빠른 응답을 주셔서 감사합니다. NSObject로 만들면 앱에서 카메라 오버레이와 다른 UI 요소를 막을 수 있습니까? 또는 명시 적으로 삭제해야합니까? – jaamun

+0

나는 그것을 얻었다고 생각한다. 그래서 그것을 객체로 만들면 인스턴스화 할 수 있고, 그 안에있는 메소드를 사용하여 QR 스캐닝을 할 수 있습니다. 그리고 나서 (GUI 객체와 뷰 렌더링을 위해) 코드를 삭제할 필요가 없습니다. 맞습니까? – jaamun

+0

NSObject는 UIViewController와는 달리 상속 된 뷰를 포함하지 않는 일반 객체입니다. 상속 된 뷰가 더 이상 존재하지 않으므로 모든 하위 뷰는 더 이상 부모 뷰를 가지지 않으므로 코드 본문의 GUI 객체 코드도 삭제하는 것이 좋습니다. 먼저 NSObject로 다시 분류하면, xcode는 제거해야하는 것을 제공합니다. 뷰/GUI와 관련된 클래스를 호출 할 때 컴파일 오류가 발생하기 때문에 상속 된 메소드가 더 이상 존재하지 않으므로 제거해야합니다. –

0

zxing objc directory에는 UIViewController 수준에서 작동하는 위젯보다 수정하기 쉬운 UIView 수준이 아닌 CA 수준에서 작동하는 클래스 집합이 있습니다.

그러나 코어 캡처 코드는보기가 화면에 있는지 여부를 추적하기 때문에 프레임 캡처를 자동으로 시작하고 중지하지 않기 때문에 약간의 조정이 필요합니다.

+0

흠, 나는 그것도 살펴볼 것입니다. 고맙습니다 – jaamun

관련 문제