Не удается найти пример использования SwiftUI в расширении клавиатуры. Я создаю расширение и пытаюсь создать простой SwiftUI
Button
без каких-либо действий (он просто печатает отладочный текст). Но на клавиатуре нет видимой кнопки. Можно ли создать собственную клавиатуру SwiftUI?
struct SwiftUIButton: View{
let action: () -> ()
var body: some View{
Button(action: action){Text("Tap me")}
}
}
class KeyboardViewController: UIInputViewController {
@IBOutlet var nextKeyboardButton: UIButton!
//1.insert this: SwiftUIButton is a simple Button View
var swiftUIButtonView: SwiftUIButton!
//...
override func viewDidLoad() {
super.viewDidLoad()
// Perform custom UI setup here
//2. try to insert my SwiftUI View
let swiftUIButtonView = SwiftUIButton(action: {print("test")})
let vc = UIHostingController(rootView: swiftUIButtonView)
//I tried that with no success
//guard let inputView = inputView else { return }
//inputView.addSubview(vc.view)
self.view.addSubview(vc.view)
//all that following code is standard from Xcode
self.nextKeyboardButton = UIButton(type: .system)
self.nextKeyboardButton.setTitle(NSLocalizedString("Next Keyboard", comment: "Title for 'Next Keyboard' button"), for: [])
self.nextKeyboardButton.sizeToFit()
self.nextKeyboardButton.translatesAutoresizingMaskIntoConstraints = false
self.nextKeyboardButton.addTarget(self, action: #selector(handleInputModeList(from:with:)), for: .allTouchEvents)
self.view.addSubview(self.nextKeyboardButton)
self.nextKeyboardButton.leftAnchor.constraint(equalTo: self.view.leftAnchor).isActive = true
self.nextKeyboardButton.bottomAnchor.constraint(equalTo: self.view.bottomAnchor).isActive = true
}
Когда я пытаюсь протестировать ее в симуляторе, я вижу пустую клавиатуру
и некоторые ошибки в консоли отладки:
2020-01-23 02: 07: 13.421876 + 0300 SwiftUIKeyboard [4723: 376225] Не удалось унаследовать разрешения CoreMedia от 4717: (null) 2020-01 -23
02: 07: 13.460713 + 0300 SwiftUIKeyboard [4723: 375598] [Внешний] - [UIInputViewController needsInputModeSwitchKey] был вызван до того, как было установлено соединение с приложением хоста. Это приведет к неточному результату. Обязательно вызывайте его после инициализации основного контроллера вида.
последнее сообщение повторяется 6 раз.
Что я делаю не так? Или мне нужно создать UIKit Keyboard View и реализовать SwiftUI внутри него?