iOS 上遇到的 window bug 解决记录

65 阅读1分钟

image.png


问题出现:

调用 SDK 进行人脸识别,退出后应该返回原页面,而实际上却返回到了最底层的 window(偶现)。

开始定位

  1. 断点跳转首页的代码,没有命中(说明不是直接跳转的)
  2. 在应用侧断点相关流程,日志正常(说明人脸识别流程没问题,只是退出有问题)
  3. 排查人脸识别 SDk 退出处理逻辑,发现与 uiwindow 有关,断点图层后发现是 window 混淆的问题,把多余创建的 window 删掉,确保 SDK 每次获取到的是它自己创建出来的 window 即可

UIWindow 相关知识点

  1. key window: 能接受事件的 window 才是 key window

    这也是为什么window 相关的通知中,有 didBecomeKeyNotificationdidBecomeVisibleNotification 之分

参考文档

  1. Apple 文档:UIWindow