我已经将示例应用程序从(https://cocoapods.org/pods/QRCodeReader.swift)实现到我自己的项目,以在显示条形码扫描仪的主屏幕上创建一个uiview。我可以扫描条形码并打印结果,但是即使在视图上显示图标,按下手电筒(手电筒)按钮也不会执行任何操作,与“取消”和“开关相机”按钮相同。可能是什么问题呢?
这是我的代码:
import UIKit
import QRCodeReader
class Plockning: UIViewController {
lazy var reader: QRCodeReader = QRCodeReader(metadataObjectTypes: [.ean13, .upce, .code128], captureDevicePosition: .back)
@IBOutlet weak var Uiview: QRCodeReaderView! {
didSet {
Uiview.setupComponents(with: QRCodeReaderViewControllerBuilder {
$0.reader = reader
$0.showTorchButton = true // ICON SHOWS ON VIEW BUT PRESSING ON IT DOES NOTHING.
$0.showSwitchCameraButton = true // ICON SHOWS ON VIEW BUT PRESSING ON IT DOES NOTHING.
$0.showCancelButton = true // ICON SHOWS ON VIEW BUT PRESSING ON IT DOES NOTHING.
$0.showOverlayView = true // THIS DOESN'T SHOW ON SCREEN
$0.rectOfInterest = CGRect(x: 0.2, y: 0.2, width: 0.6, height: 0.6)
})
}
}
override func viewDidLoad()
{
super.viewDidLoad()
reader.startScanning()
reader.didFindCode = { result in
print("Completion with result: (result.value) of type (result.metadataType)")
}
}
}
您需要更全面地检查源代码。
该行例如:
.showTorchButton = true
toggleTorchButton
在界面上添加了一个“默认值” ,但是该按钮在告诉您您要执行的操作之前不会执行任何操作。
在提供的中QRCodeReaderViewController
,我们找到以下行:
builder.readerView.displayable.toggleTorchButton?.addTarget(self, action: #selector(toggleTorchAction), for: .touchUpInside)
和相应的选择器:
@objc func toggleTorchAction(_ button: ToggleTorchButton) {
codeReader.toggleTorch()
}
因此,对于您的应用程序,您将实现相同的选择器功能,并将操作添加到QRCodeReaderView
已设置的操作中:
class Plockning: UIViewController {
lazy var reader: QRCodeReader = QRCodeReader(metadataObjectTypes: [.ean13, .upce, .code128], captureDevicePosition: .back)
@IBOutlet weak var Uiview: QRCodeReaderView! {
didSet {
Uiview.setupComponents(with: QRCodeReaderViewControllerBuilder {
$0.reader = reader
$0.showTorchButton = true // ICON SHOWS ON VIEW BUT PRESSING ON IT DOES NOTHING.
$0.showSwitchCameraButton = true // ICON SHOWS ON VIEW BUT PRESSING ON IT DOES NOTHING.
$0.showCancelButton = true // ICON SHOWS ON VIEW BUT PRESSING ON IT DOES NOTHING.
$0.showOverlayView = true // THIS DOESN'T SHOW ON SCREEN
$0.rectOfInterest = CGRect(x: 0.2, y: 0.2, width: 0.6, height: 0.6)
})
}
}
override func viewDidLoad()
{
super.viewDidLoad()
// assign the touchUpInside action for the torch button
Uiview.toggleTorchButton?.addTarget(self, action: #selector(self.toggleTorchAction(_:)), for: .touchUpInside)
reader.startScanning()
reader.didFindCode = { result in
print("Completion with result: \(result.value) of type \(result.metadataType)")
}
}
// handle the user tapping the torch button
@objc func toggleTorchAction(_ button: ToggleTorchButton) {
reader.toggleTorch()
}
}
您将要对要显示的其他“内置”按钮执行相同的操作。
顺便说一句,这Uiview
是一个糟糕的名称。使用类似:
@IBOutlet weak var myScannerView: QRCodeReaderView!
或类似的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句