предпочитаемыйScreenEdgesDeferringSystemGestures в расширении клавиатуры не работает - PullRequest
0 голосов
/ 15 апреля 2020

Я пытаюсь сделать расширение клавиатуры на 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. ничего не помогает. Возможно ли для клавиатуры отключить системный жест нижнего края экрана?

...