QMUI_iOS
QMUI_iOS copied to clipboard
iOS26下获取键盘高度有问题
用QMUIKeyboardManager类下的visibleKeyboardHeight方法获取键盘高度,始终返回0
查了下,应该是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;
}
好的回头我试下
查了下,应该是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
好的回头我试下
大佬,如何适配一下iOS26键盘高度的问题哈,现在有部分用户找过来了。