iOS11下[UIApplication sharedApplication].windows的问题

本文探讨了iOS11中页面跳转后视图不显示的问题。通过对比iOS10与iOS11的行为差异,指出使用[UIApplication sharedApplication].keyWindow而非.windows.lastObject来解决此问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在适配iOS11的时候一个添加到window上的视图不显示,调试打印发现在iOS11中,当发生页面跳转的后,获取[UIApplication sharedApplication].windows的_UIInteractiveHighlightEffectWindow类型的window,并且其hidden = YES;
打印结果
所以在[UIApplication sharedApplication].windows.lastObject获取window并添加后显示不出来。修改为[UIApplication sharedApplication].keyWindow解决问题。
这是iOS11跳转页面后的windows
这是iOS11跳转页面后的windows

这是iOS10跳转页面后的windows
这是iOS10跳转页面后的windows

requestNotificationPermission() { // 检查并请求通知权限 if (plus.os.name === "iOS") { // iOS 特有的通知权限请求方式 plus.ios.importClass(plus.ios.UIApplication); plus.ios.invoke(plus.ios.UIApplication.sharedApplication(), "registerUserNotificationSettings:"); plus.ios.invoke(plus.ios.UIApplication.sharedApplication(), "registerForRemoteNotifications"); } else if (plus.os.name === "Android") { // Android 特有的通知权限请求方式 var main = plus.android.runtimeMainActivity(); var Intent = plus.android.importClass("android.content.Intent"); var NotificationManager = plus.android.importClass("android.app.NotificationManager"); var Build = plus.android.importClass("android.os.Build"); var Context = plus.android.importClass("android.content.Context"); var CHECK_OP_NO_THROW = plus.android.importClass("android.content.Context").CHECK_OP_NO_THROW; var AppOpsManager = plus.android.importClass("android.app.AppOpsManager"); var appOps = Context.APP_OPS_SERVICE; // App Ops Service var appOpsManager = main.getSystemService(appOps); var code = appOpsManager.checkOpNoThrow(AppOpsManager.OP_POST_NOTIFICATIONS, android.os.Process .myUid(), main.getPackageName()); var resultText = ""; if (code == AppOpsManager.MODE_IGNORED) { resultText = "App notifiaction opration denied"; } else { var intent = new Intent("android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS"); main.startActivity(intent); } } else { // 其他平台,通常不需要特殊处理,除非平台有特殊要求 } },报错Androidnotdefind
最新发布
06-18
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值