Я пытаюсь сделать расширение клавиатуры на SwiftUI
. Моя клавиатура часто использует жесты. Но жесты вверх от клавиш, расположенных внизу экрана, должны распознаваться как системные жесты. Как было сказано здесь Я пытался использовать preferredScreenEdgesDeferringSystemGestures
параметр UIInputViewController
, но это не помогает.
вот мой код:
class MyController<Content: View>: UIHostingController<Content>{
open override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge{
return [.bottom]
}
}
class KeyboardViewController: UIInputViewController {
@IBOutlet var nextKeyboardButton: UIButton!
let device = Device()
override var preferredScreenEdgesDeferringSystemGestures: UIRectEdge{
return [.bottom]
}
override func updateViewConstraints() {
super.updateViewConstraints()
}
override func viewDidLoad() {
super.viewDidLoad()
let setting = KeyboardSettings.Default
let swiftUIView = SwiftUIContainer(inputObjectDelegate: self, setting: setting)
let child = MyController(rootView: swiftUIView.environmentObject(device))
child.setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
child.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
view.addSubview(child.view)
addChild(child)
let heightConstraint = NSLayoutConstraint(item: view, attribute: .height, relatedBy: .equal, toItem: nil, attribute: .notAnAttribute, multiplier: 1.0, constant: CGFloat(setting.height))
view.addConstraint(heightConstraint)
setNeedsUpdateOfScreenEdgesDeferringSystemGestures()
}
}
Я попробовал оба, переопределить UIHostingController
как подкласс и переопределить UIInputViewController
. ничего не помогает. Возможно ли для клавиатуры отключить системный жест нижнего края экрана?