2017-05-24 52 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