ios实现锁屏解锁功能时候问题

任务描述

alertview不应当显示在pincode的输入页面,应当在其下方显示。

当用户使用摄像头scan条形码并且弹出筐体后,home按键退到后台,然后再次回到前台。输入pincode而后pincode页面消失后,点击alertview的ok按键,然后会发现在ios8系统上会快速再次弹出一个alertview。ios7却是好的。当前的alertview是自定义的,如果改为系统的就不会有这个问题,但是需要解决系统的要在view下方弹出的设计。

实现的原理:将这个输入pin code的页面重新创建一个window,并且将window level设置为比alertview更高级别的,在需要隐藏的时候使用setHidden:yes。例子如下:

@property (nonatomic, strong) UIWindow *lockWindow;

self.viewController = [[UIViewController alloc] initWithDelegate:self];
//设置viewcontroller一些需要的内容比如颜色等
if(self.lockWindow) {
        [self.lockWindow setHidden:NO]; //这里在进入后台再次启动调用时候判断处理,如果还存在就直接显示,这样会依然保留之前的输入状态
 } else {
        self.lockWindow = [[UIWindow alloc]initWithFrame:[[UIScreen mainScreen] bounds]];
        self.lockWindow.windowLevel = UIWindowLevelAlert + 1; //这里即可实现这个viewcontroller在alertview之上显示的效果
        self.viewController.view.frame = self.lockWindow.bounds;
        self.lockWindow.rootViewController = self.viewController;
        self.lockWindow.rootViewController.view.backgroundColor = [UIColor whiteColor];
        [self.lockWindow makeKeyAndVisible]; //这里一定要使用makeKeyAndVisible
}



展开阅读全文

没有更多推荐了,返回首页