lixiang1994 / LEEAlert

优雅的可自定义 Alert ActionSheet
MIT License
1.3k stars 203 forks source link

LEEAlert执行之后,[UIApplication sharedApplication].keyWindow错位的bug #124

Closed kakashilw closed 3 years ago

kakashilw commented 3 years ago
NSLog(@"LEEAlert [UIApplication sharedApplication].keyWindow:%@",[UIApplication sharedApplication].keyWindow);

[LEEAlert alert].config
.LeeTitle(@"标题")         // 添加一个标题 (默认样式)
.LeeContent(@"内容")        // 添加一个标题 (默认样式)
.LeeAction(@"默认Action", ^{        //添加一个默认类型的Action (默认样式 字体颜色为蓝色)
    // 点击事件Block
})
.LeeDestructiveAction(@"销毁Action", ^{    // 添加一个销毁类型的Action (默认样式 字体颜色为红色)
    // 点击事件Block
})
.LeeCancelAction(@"取消Action", ^{    // 添加一个取消类型的Action (默认样式 alert中为粗体 actionsheet中为最下方独立)
    // 点击事件Block
})
.LeeShow(); // 最后调用Show开始显示

你好,【真机】iPhone 11 PRO MAX iOS13.5.1 测试,执行上述代码,第一次输出

LEEAlert [UIApplication sharedApplication].keyWindow:<UIWindow: 0x10321ca20; frame = (0 0; 414 896); opaque = NO; autoresize = RM+BM; gestureRecognizers = <NSArray: 0x280a44a20>; layer = <UIWindowLayer: 0x2804a4600>>

执行过一次之后,再打印[UIApplication sharedApplication].keyWindow就变成了

LEEAlert [UIApplication sharedApplication].keyWindow:<UIWindow: 0x103230be0; frame = (0 -44; 414 44); gestureRecognizers = <NSArray: 0x280bf0c30>; layer = <UIWindowLayer: 0x280469aa0>>

然后就导致其他使用[UIApplication sharedApplication].keyWindow的控件错位了。

PS:模拟器没问题,用真机就会出现这个bug。。我下载了你的最新版,还是会有这个问题,然后追踪了一会,也没发现是你在内部哪个代码修改了这个的值。希望可以帮忙查看查看,我挺多控件都因为这个受影响了。

lixiang1994 commented 3 years ago

好的, 我排查一下 你确认一下 具体范围是全面屏才会出现吗? 还是都有这种现象

lixiang1994 commented 3 years ago

还要麻烦确认一下 是否设置了这个

// ⚠️ 设置主Window
[LEEAlert configMainWindow:self.window];
lixiang1994 commented 3 years ago

?? 我看了一圈 没有复现出来 似乎不是我这边的问题呀

kakashilw commented 3 years ago

你好,找到原因了,是我集成了https://github.com/DaquanZhou/ZDQStatusBarHUD 这个,然后会出现这个问题,把这个的调用注释掉就OK了。因为集成这个之后,只有执行了LEEAlert之后[UIApplication sharedApplication].keyWindow才会改变,所以我以为是LEEAlert的问题。

lixiang1994 commented 3 years ago

哈哈 好的