Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improved match feedback #82

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

xinsight
Copy link

I wanted more feedback when a QR code is found. I added a system sound (a buzz) as well as highlight the bounds of the QR code. (I also added a delay property so that you can actually see the highlight before the view controller is dismissed.)

Let me know if you have any questions - thanks!

@yannickl
Copy link
Owner

Thank you for your contribution. I'm busy for the moment, I'll try to check your pull request tomorrow (in the worst case, this w-e).

The first feedback: why do you delay the delegate/completion block call while you can do that manually in your code? I have some use cases where I need to be reactive.

@xinsight
Copy link
Author

xinsight commented Dec 1, 2016

I needed to add the delay somewhere - otherwise you can't see the highlighting before the view is dismissed. Since you provide both the view and the view controller, I wasn't sure where it would best go. I made it configurable, so the delay could be zero by default.

A question about the example app - is there a reason that the QR view controller is saved as a variable in the main view controller? I would prefer to recreate it each time - mainly so that the previous highlight area doesn't show up when the QR view controller is relaunched. (And I wouldn't have to worry about resetting the highlighted area.)

@yannickl
Copy link
Owner

yannickl commented Dec 1, 2016

You can add the delay in the callback methods (either with the block or either with the delegate):

func reader(_ reader: QRCodeReaderViewController, didScanResult result: QRCodeReaderResult) {
    reader.stopScanning()

    DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 1, execute: { [weak self] in
      self?.dismiss(animated: true) {
        // ...
      }
    })
}

Yes I use a variable because the creation of AVCaptureDevice is very expensive. So it's better to init it once.

About the highlight area each time the viewWillApear you can re-init it.

@xinsight
Copy link
Author

xinsight commented Dec 2, 2016

I've moved the delay to the example app view controller.

I generally keep the Example app as simple as possible - so storing the QR view controller instance in the presenting controller feels like an unnecessary optimization. Anyways, I've left it as is, and added a workaround to remove the highlighting on subsequent view controller launches.

I also added a flag to enable/disable the highlighting.

@hixfield
Copy link

Hi guys any news on integration this PR?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants