UIAlertView 上面的 UIView
Posted
技术标签:
【中文标题】UIAlertView 上面的 UIView【英文标题】:UIView above UIAlertView 【发布时间】:2014-06-17 11:31:18 【问题描述】:在我的应用中,使用了锁定屏幕。有时会显示UIAlertView
,现在当用户将应用程序发送到后台并再次将其置于前面时,UIAlertview
会显示在锁定屏幕上方。是否有可能在所有内容之上添加UIViewController
的视图,即在UIAlertView
之上?
【问题讨论】:
对你需要做的事情有点微笑,所以我希望它有所帮助。 ***.com/questions/22241412/… 回避问题的一种方法可能是维护您的UIAlertView
的引用,并在应用程序进入后台时将其隐藏。当应用再次进入前台时,由您决定如何处理 alertView 引用。
好问题。但我认为UIAlertView
应该是最重要的——这是它的职责——提醒。
【参考方案1】:
你应该有这样的
UIWindow *mySpecialWindowForLockScreen = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
//"Hey ios Please put this window above all alert view"
mySpecialWindowForLockScreen.windowLevel = UIWindowLevelAlert+100;
UIViewController *lockScreenViewController = [[UIViewController alloc]init];//Lock Screen
lockScreenViewController.view.frame = mySpecialWindowForLockScreen.bounds;
mySpecialWindowForLockScreen.rootViewController = lockScreenViewController;
// In lockScreenViewController view you can add lock screen images and other UI stuff
mySpecialWindowForLockScreen.rootViewController.view.backgroundColor = [UIColor greenColor];
[mySpecialWindowForLockScreen makeKeyAndVisible];
当您想要隐藏 LockScreen 窗口时,只需通过 setHidden:YES 将其隐藏。
【讨论】:
现在它也适用于我;问题是 ARC 立即清理了mySpecialWindowForLockScreen
,因此我必须为它创建一个属性。【参考方案2】:
UIWindowLevel 共有三种,最大的会显示在另一个窗口的上方。
所以我建议你使用 UIWindow 来创建你的锁屏,让它的窗口级别大于UIWindowLevelAlert
,
基本上,它们的值是:
UIWindowLevelNormal = 0.000000;
UIWindowLevel UIWindowLevelAlert = 2000.000000;
UIWindowLevel UIWindowLevelStatusBar = 1000.000000;
这就是为什么警报视图会显示在另一个窗口上方的原因。试试看吧。
【讨论】:
以上是关于UIAlertView 上面的 UIView的主要内容,如果未能解决你的问题,请参考以下文章
验证 UITextField 并在错误时显示 UIAlertView