jsqmessageviewcontroller ios11工具栏

Sam*_*ong 7 uitoolbar ios jsqmessagesviewcontroller ios11

我已经尝试了JSQMessageViewControlleriOS 11模拟器内部的快速示例.结果如下:截图

我尝试使用安全区域边距并修改工具栏约束但仍然没有区别.似乎工具栏在UIWindow之外(改为UITextEffectsWindow).有什么解决方案吗?

ERb*_*tuu 8

只需为JSQMessagesInputToolbar添加扩展名即可

extension JSQMessagesInputToolbar {
    override open func didMoveToWindow() {
        super.didMoveToWindow()
        if #available(iOS 11.0, *), let window = self.window {
            let anchor = window.safeAreaLayoutGuide.bottomAnchor
            bottomAnchor.constraintLessThanOrEqualToSystemSpacingBelow(anchor, multiplier: 1.0).isActive = true
        }
    }
}
Run Code Online (Sandbox Code Playgroud)


Sam*_*ong 5

伙计们,我已经想通了!只需将以下代码放在 JSQMessagesInputToolbar.m 中即可。似乎输入工具栏被放置在它自己的窗口中,你需要单独访问它的窗口。

-(void) didMoveToWindow{
[super didMoveToWindow];
 if (@available(iOS 11.0, *)) {
     [[self bottomAnchor] constraintLessThanOrEqualToSystemSpacingBelowAnchor:self.window.safeAreaLayoutGuide.bottomAnchor multiplier:1.0].active = YES;
     }
}
Run Code Online (Sandbox Code Playgroud)

  • 你必须检查 window.safeAreaLayoutGuide 不是 nil 因为只是使用上面的代码应用程序在关闭屏幕时崩溃所以添加 if 条件可以检查是否为 nil 然后跳过 (5认同)