나는 비슷한 것을했고 약간의 지침을 제공 할 수 있지만 소스 코드를 공유 할 수는 없습니다.
ZXingWidgetController.mm, .h 파일을 살펴보십시오. 이것은 컴파일 할 수있는 완전히 기능하는 QRcode 스캐닝 응용 프로그램이므로 백엔드 코드 만 포함하도록 리버스 엔지니어링 할 수 있습니다. 클래스가 UIViewController 대신 NSObject를 확장하도록 .h를 편집 한 다음 GUI 객체 인 모든 클래스 속성 및 인스턴스 변수를 삭제합니다.
그러면 xcode가 더 이상 필요하지 않은 모든 메서드와 변수를 .mm 파일에서 경고/오류로 찾아서 표시합니다 (willAppear 등). 이 코드의 대부분은 삭제할 수 있지만 할당 자/할당 해제자를 생성자/해체 자로 옮기는 데주의해야합니다.
viewController에서이 클래스의 인스턴스를 만들고 클래스를 호출하여 검색을 시작할 수 있습니다. ZXingWidgetController.mm 파일의 didDecodeImage를 수정하여 QR 코드의 결과를 성공적으로 얻을 때 수행 할 작업을 수행해야합니다. 하나의 가능성은 상위 뷰 컨트롤러를 매개 변수로 사용하도록 생성자를 수정하고 인스턴스 변수에 위임자 (__weak)로 저장 한 다음이를 사용하여 didDecodeImage 메서드에서 해당 함수 중 하나를 호출하는 것입니다. 다른 사람들은 알림을 사용하여 데이터를 주 코드로 다시 전달할 수 있습니다.
희망이 도움이됩니다.
빠른 응답을 주셔서 감사합니다. NSObject로 만들면 앱에서 카메라 오버레이와 다른 UI 요소를 막을 수 있습니까? 또는 명시 적으로 삭제해야합니까? – jaamun
나는 그것을 얻었다고 생각한다. 그래서 그것을 객체로 만들면 인스턴스화 할 수 있고, 그 안에있는 메소드를 사용하여 QR 스캐닝을 할 수 있습니다. 그리고 나서 (GUI 객체와 뷰 렌더링을 위해) 코드를 삭제할 필요가 없습니다. 맞습니까? – jaamun
NSObject는 UIViewController와는 달리 상속 된 뷰를 포함하지 않는 일반 객체입니다. 상속 된 뷰가 더 이상 존재하지 않으므로 모든 하위 뷰는 더 이상 부모 뷰를 가지지 않으므로 코드 본문의 GUI 객체 코드도 삭제하는 것이 좋습니다. 먼저 NSObject로 다시 분류하면, xcode는 제거해야하는 것을 제공합니다. 뷰/GUI와 관련된 클래스를 호출 할 때 컴파일 오류가 발생하기 때문에 상속 된 메소드가 더 이상 존재하지 않으므로 제거해야합니다. –