Я работаю с пользовательским расширением клавиатуры с SwiftUI. Я пытаюсь реализовать событие нажатия клавиши для передачи в поле ввода с помощью делегата. Вот код:
class KeyboardViewController: UIInputViewController {
override func viewDidLoad() {
super.viewDidLoad()
let vc = UIHostingController(rootView: MyKeyButtons())
//vc.view.translatesAutoresizingMaskIntoConstraints = true
vc.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
addChild(vc)
view.addSubview(vc.view)
vc.didMove(toParent: self)
}
}
extension KeyboardViewController: KeyPressedDelegate {
func keyValueSelected(str: String) {
print("Yay! working \(str)") //working
self.textDocumentProxy.insertText("b") //not working!!!
}
}
struct MyKeyButtons: View {
let myKB = KeyboardViewController()
let data: [String] = ["D", "E", "F"]
var body: some View {
HStack {
ForEach(data, id: \.self) { aData in
Button(action: {
let bakery = Bakery()
bakery.aDelegate = self.myKB
bakery.makeCookie()
}) {
Text(aData).fontWeight(.bold).font(.title)
.foregroundColor(.white).padding()
.background(Color.purple)
}
}
}
}
}
И код делегата:
class Bakery {
var aDelegate: KeyPressedDelegate?
func makeCookie() {
aDelegate?.keyValueSelected(str: "a")
}
}
protocol KeyPressedDelegate {
func keyValueSelected(str: String)
}