iPad 悬浮键盘bug 适配

我们在iOS/iPadOS上遇到了一个特定的错误,似乎是在iPad在屏幕上显示浮动(类似于iPhone的)键盘(而不是固定的键盘)时触发的
  • 我们的问题特定于React Native和KeyboardAvoidingView组件。当组件渲染并且键盘悬空时,KeyboardAvoidingView完全错误地计算了键盘所需的高度,而隐藏了屏幕高度的约95%。

  • KeyboardAvoidingView本身似乎无法检测浮动键盘是否打开。

  • 是否可以使用特定的API来检测此键盘模式,以便我们可以关闭KeyboardAvoidingView?

  • 键盘事件(keyboardWillShow,keyboardDidShow等)似乎没有返回任何特定的线索。

最佳答案
  • 没有这样的模式枚举/指示符(至少目前是这样),但是具有键盘框架信息
  • 是通过键盘宽度是否可以改变可以进行判断是否为悬浮键盘
  • 根据键盘宽度的改变 是否为悬浮键盘
    if (rect.size.width == UIScreen.mainScreen.bounds.size.width) {
        [UIView animateWithDuration:time animations:^{
            if (Y > 0) {
                // 键盘弹出的时候禁止开启抽屉
                self.navigationItem.leftBarButtonItem.enabled = NO;
                
                self.sendMessageTableView.frame = CGRectMake(0, CYSafeAreaTopHeight, SCREEN_WIDTH, SCREEN_HEIGHT - self.chatToolView.height - Y - CYSafeAreaTopHeight);
                self.chatToolView.frame = CGRectMake(0, self.sendMessageTableView.maxY, SCREEN_WIDTH, self.chatToolView.height);
            } else {
                self.navigationItem.leftBarButtonItem.enabled = YES;
                
                self.sendMessageTableView.frame = CGRectMake(0, CYSafeAreaTopHeight, SCREEN_WIDTH, SCREEN_HEIGHT - self.chatToolView.height - Y - CYSafeAreaTopHeight);
                self.chatToolView.frame = CGRectMake(0, self.sendMessageTableView.maxY, SCREEN_WIDTH, self.chatToolView.height);
            }
            self.autoCompletionView.maxY = self.chatToolView.y;
            [self scrollPositionBottom];
        }];
    } else {
        // 添加iPad 悬浮键盘适配
        self.navigationItem.leftBarButtonItem.enabled = YES;
        
        self.sendMessageTableView.frame = CGRectMake(0, CYSafeAreaTopHeight, SCREEN_WIDTH, SCREEN_HEIGHT - self.chatToolView.height - CYSafeAreaTopHeight);
        self.chatToolView.frame = CGRectMake(0, self.sendMessageTableView.maxY, SCREEN_WIDTH, self.chatToolView.height);
        
        self.autoCompletionView.maxY = self.chatToolView.y;
        [self scrollPositionBottom];
    }
  • demo


    image.png

    image.png

你可能感兴趣的:(iPad 悬浮键盘bug 适配)