Skip to content

Commit 9f72625

Browse files
author
molicechen
committed
4.4.1
1 parent 94c5dcf commit 9f72625

File tree

1 file changed

+9
-14
lines changed

1 file changed

+9
-14
lines changed

QMUIKit/UIKitExtensions/UIView+QMUI.m

Lines changed: 9 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -693,20 +693,15 @@ - (void)setQmui_layoutSubviewsBlock:(void (^)(__kindof UIView * _Nonnull))qmui_l
693693
objc_setAssociatedObject(self, &kAssociatedObjectKey_layoutSubviewsBlock, qmui_layoutSubviewsBlock, OBJC_ASSOCIATION_COPY_NONATOMIC);
694694
Class viewClass = self.class;
695695
[QMUIHelper executeBlock:^{
696-
if (@available(iOS 14.0, *)) {
697-
if (@available(iOS 15.0, *)) {
698-
} else {
699-
// iOS 14 iPad 悬浮键盘,项目里 hook 了 -[UIView layoutSubviews] 的同时为输入框设置 inputAccessoryView,则输入框聚焦时会触发系统布局死循环
700-
// 实测只有 iOS 14 有这种问题,iOS 13、15 都没事
701-
// https://github.com/Tencent/QMUI_iOS/issues/1247
702-
// https://km.woa.com/group/24897/articles/show/456340
703-
if (viewClass == UIView.class) {
704-
IMP layoutSubviewsIMPForUIKit = class_getMethodImplementation(UIView.class, @selector(layoutSubviews));
705-
SEL layoutSubviewSEL = @selector(layoutSubviews);
706-
const char * typeEncoding = method_getTypeEncoding(class_getInstanceMethod(UIView.class, layoutSubviewSEL));
707-
class_addMethod(NSClassFromString(@"UIInputSetHostView"), layoutSubviewSEL, layoutSubviewsIMPForUIKit, typeEncoding);
708-
}
709-
}
696+
// iOS 14 iPad 悬浮键盘,项目里 hook 了 -[UIView layoutSubviews] 的同时为输入框设置 inputAccessoryView,则输入框聚焦时会触发系统布局死循环
697+
// 实测只有 iOS 14 有这种问题,iOS 13、15 都没事
698+
// https://github.com/Tencent/QMUI_iOS/issues/1247
699+
// https://km.woa.com/group/24897/articles/show/456340
700+
if (IOS_VERSION >= 14.0 && IOS_VERSION < 15.0 && IS_IPAD && viewClass == UIView.class)
701+
IMP layoutSubviewsIMPForUIKit = class_getMethodImplementation(UIView.class, @selector(layoutSubviews));
702+
SEL layoutSubviewSEL = @selector(layoutSubviews);
703+
const char * typeEncoding = method_getTypeEncoding(class_getInstanceMethod(UIView.class, layoutSubviewSEL));
704+
class_addMethod(NSClassFromString(@"UIInputSetHostView"), layoutSubviewSEL, layoutSubviewsIMPForUIKit, typeEncoding);
710705
}
711706
ExtendImplementationOfVoidMethodWithoutArguments(viewClass, @selector(layoutSubviews), ^(__kindof UIView *selfObject) {
712707
if (selfObject.qmui_layoutSubviewsBlock && [selfObject isMemberOfClass:viewClass]) {

0 commit comments

Comments
 (0)