2017-05-24 4 views
0

바코드를 읽으려면 AVCaptureMetadataOutput을 사용하고 있습니다. 뭔가 일치 할 때 그것은 ... .. 대리자 방법버튼을 놓은 상태에서만 바코드 스캔

captureOutput(_ captureOutput: AVCaptureOutput!, didOutputMetadataObjects metadataObjects: [Any]!, from connection: AVCaptureConnection!)

를 호출합니다.

사용자가 버튼에 손가락을 대고 있지 않으면 일치를 무시하도록하려면 어떻게해야합니까?

+0

전화'FUNC의 setMetadataObjectsDelegate (_ objectsDelegate : AVCaptureMetadataOutputObjectsDelegate! 큐 objectsCallbackQueue! DispatchQueue)'만이 버튼을 길게하기 시작할 때? – Larme

답변

1

버튼에 여러 작업을 추가 할 수 있습니다. 사용자가 아래로 누를 때 캐치, 읽기 바코드 상태를 설정하십시오. 사용자가 갈 때 캐치, 읽은 바코드 상태를 지 웁니다.

func viewDidLoad() { 
    ... 
    button.addTarget(self, action:#selector(buttonDown), for:.touchDown) 
    button.addTarget(self, action:#selector(buttonUp), for:.touchUpInside) 
    button.addTarget(self, action:#selector(buttonUp), for:.touchUpOutside) 
    ... 
} 

func buttonDown() { 
    startReadBarcode() 
} 

func buttonUp() { 
    stopReadBarcode() 
} 
+0

좋아 보인다. 그런데 제스처 인식기를 사용하지 않는 이유는 무엇입니까? –

+0

버튼에 플래그를 설정하고 버튼에 플래그를 설정하지 않을 것이라고 생각합니다. 그것은 대리자 메서드에 최소한의 영향을줍니다. –

+0

제스처 인식기를 사용하면 왜 이렇게 간단할까요? – Spads

관련 문제