Делегат SwiftUI не работает для UIInputViewController - PullRequest
0 голосов
/ 27 марта 2020

Я работаю с пользовательским расширением клавиатуры с 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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...