LiTranslate-iOS/LiTranslate/Presentation/Component/UIViewRepresantable/ScanButton.swift

49 lines
1.3 KiB
Swift
Raw Permalink Normal View History

2022-09-10 19:46:05 +02:00
//
// ScanButton.swift
// LiTranslate
//
// Thanks for the guide:
// https://www.raywenderlich.com/28189776-capturing-text-from-camera-using-swiftui
//
import SwiftUI
struct ScanButton: UIViewRepresentable {
@Binding var text: String
func makeUIView(context: Context) -> some UIView {
let textFromCamera = UIAction.captureTextFromCamera(
responder: context.coordinator,
identifier: nil)
let button = UIButton(primaryAction: textFromCamera)
button.setImage(UIImage(systemName: SystemNames.cameraScan), for: .normal)
button.setTitle("", for: .normal)
button.menu = UIMenu(children: [textFromCamera])
return button
}
func updateUIView(_ uiView: UIViewType, context: Context) { }
func makeCoordinator() -> Coordinator {
Coordinator(self)
}
class Coordinator: UIResponder, UIKeyInput {
let parent: ScanButton
init(_ parent: ScanButton) { self.parent = parent }
var hasText = false
func insertText(_ text: String) { parent.text = text }
func deleteBackward() { }
}
}
struct ScanButton_Previews: PreviewProvider {
static var previews: some View {
ScanButton(text: .constant(""))
.previewLayout(.sizeThatFits)
}
}