QMUI_iOS icon indicating copy to clipboard operation
QMUI_iOS copied to clipboard

iOS26下获取键盘高度有问题

Open TESTSUP opened this issue 5 months ago • 4 comments

用QMUIKeyboardManager类下的visibleKeyboardHeight方法获取键盘高度,始终返回0

TESTSUP avatar Jul 22 '25 04:07 TESTSUP

查了下,应该是iOS26键盘视图类名变了,QMUIKeyboardManager下的 **+ (UIView )inputSetHostViewInWindow:(UIWindow )window 方法获取不到有效的视图,导致键盘高度返回了0,针对此方法修改后,拿到了高度

+ (UIView *)inputSetHostViewInWindow:(UIWindow *)window {
    
    UIView *result = [[window.subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UIInputSetContainerView"];
    }].subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UIInputSetHostView"] && subview.subviews.count;
    }];
    
    if (result) {
        return result;
    }
    
    // iOS26获取键盘视图
    result = [[window.subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UITrackingWindowView"];
    }].subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UIKeyboardItemContainerView"] && subview.subviews.count;
    }];
    return result;
}

TESTSUP avatar Jul 22 '25 05:07 TESTSUP

好的回头我试下

MoLice avatar Jul 22 '25 10:07 MoLice

查了下,应该是iOS26键盘视图类名变了,QMUIKeyboardManager下的 **+ (UIView )inputSetHostViewInWindow:(UIWindow )window 方法获取不到有效的视图,导致键盘高度返回了0,针对此方法修改后,拿到了高度

+ (UIView *)inputSetHostViewInWindow:(UIWindow *)window {
    
    UIView *result = [[window.subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UIInputSetContainerView"];
    }].subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UIInputSetHostView"] && subview.subviews.count;
    }];
    
    if (result) {
        return result;
    }
    
    // iOS26获取键盘视图
    result = [[window.subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UITrackingWindowView"];
    }].subviews qmui_firstMatchWithBlock:^BOOL(__kindof UIView * _Nonnull subview) {
        return [NSStringFromClass(subview.class) isEqualToString:@"UIKeyboardItemContainerView"] && subview.subviews.count;
    }];
    return result;
}

可是这样修改的话,键盘消失了,高度也不是0

helloWotu avatar Sep 04 '25 08:09 helloWotu

好的回头我试下

大佬,如何适配一下iOS26键盘高度的问题哈,现在有部分用户找过来了。

helloWotu avatar Sep 04 '25 08:09 helloWotu