“keyWindow”带来的思考
Nadeal2022年5月17日 10:47个人博客1264
“keyWindow”在使用的时候,出现了警告⚠️提示。告诉我说iOS13.0以后已经遗弃了这种做法,但是我们也知道遗弃不代表禁用,毕竟苹果也是要考虑到版本的兼容性。
事情比较简单,就是我想要把一个UIView置顶,做法一般是引用一个“keyWindow”,
[[UIApplication sharedApplication].keyWindow addSubview:self];
结果被提示了一下:
'keyWindow' is deprecated: first deprecated in iOS 13.0 - Should not be used for applications that support multiple scenes as it returns a key window across all connected scenes
现在都是iOS15.0在盛行了,怎么会有iOS13的警告提示。嗯!!!必须处理一下,查一查资料什么的。
有人说这种做法:
[[UIApplication sharedApplication].windows.firstObject addSubview:self];
一看代码,简单~So Easy~果然是典型的拿来主义。
然后,Emo时刻到了,又被警告提示了一下:
'windows' is deprecated: first deprecated in iOS 15.0 - Use UIWindowScene.windows on a relevant window scene instead
似乎Xcode在告诉我,:小伙子,你还是太年轻了!!!
的确,不能大意了。每一次iOS的大版本升级,都是需要我们去注意的,特别是在Beta版本的时候。最后,我还是乖乖的写上版本兼容:
if (@available(iOS 15, *)) {
__block UIScene * _Nonnull tmpSc;
[[[UIApplication sharedApplication] connectedScenes] enumerateObjectsUsingBlock:^(UIScene * _Nonnull obj, BOOL * _Nonnull stop) {
if (obj.activationState == UISceneActivationStateForegroundActive) {
tmpSc = obj;
*stop = YES;
}
}];
UIWindowScene *curWinSc = (UIWindowScene *)tmpSc;
[curWinSc.keyWindow addSubview:self];
} else {
[[UIApplication sharedApplication].windows.firstObject addSubview:self];
}
写完这个以后,我又陷入了一个思考:iOS16什么时候出来,又会带来什么样的特性?
很赞哦!
(
1
)