利用UIWindow实现密码保护功能

需求描述

用户从任一界面按Home键退出,再从后台切换回来时,显示一个密码输入界面,只有用户输入正确的密码,才能进入退出前的界面。

需求分析

由于密码输入界面可能从任何应用界面弹出,且需要盖在所有界面的最上层,所以需哟用UIView来实现

基础知识

UIWindow的主要作用:

1.作为UIView的最顶层容器,包含应用显示需要的所有的UIView

2. 传递触摸消息和键盘事件给UIView

具体实现

+ (PasswordInputWindow *)sharedInstance
{
    static id sharedInstance = nil;
    static dispatch_once_t onceToken;

    dispatch_once(&onceToken, ^{

        sharedInstance = [[self alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    });

    return sharedInstance;
}

- (id)initWithFrame:(CGRect)frame
{

    self = [super initWithFrame:frame];

    if (self) {

	//setup UI
}

- (void)show
{
    [self makeKeyWindow];
    self.hidden = NO;
}

在APPDelegate的下面回调方法中使用该Window

- (void)applicationWillEnterForeground:(UIApplication *)application {

    [[PasswordInputWindow sharedInstance] show];
}

额外的奖励

通过创建UIWindow,我们可以很容易的实现将某些特定界面置于最上层的效果,但是这种特性最好只用于无法确定该视图应该在哪个控制器上面,若明确视图应该出现在哪个控制器上面,则一般选择在该控制器上创建新的视图来实现该功能。此外,在一个项目中不应该过多的创建这种UIWindow单例对象,众所周知,单例会一直保持在内存中,得不到释放!

搬砖工看这里: http://download.csdn.net/detail/luozhonglan/8608207

******************************************************************************************************************************************************************************************************

posted by  罗大佑子

2015-4-18

时间: 2024-10-22 18:30:11

利用UIWindow实现密码保护功能的相关文章

android 下 利用webview实现浏览器功能

android 下 利用webview实现浏览器功能: 1.界面添加WEBVIEW控件. 2.在界面.JAVA代码页面(protected void onCreate(Bundle savedInstanceState) 方法中)添加如下代码: //#region WebView wb=(WebView)findViewById(R.id.Wb_Main); //设置WebView属性,能够执行Javascript脚本 wb.getSettings().setJavaScriptEnabled(

利用LVM的快照功能来实现对数据做几乎热备

lVM的快照功能来实现几乎热备 LVM的快照功能可以将某一时刻的信息记录到快照区中,因此,可以利用这一特点对数据做完全备份.而后,新提交的数据可以利用二进制日志文件来做增量备份和还原.因此,通过这种方式就可以实现对数据做几乎热备. 要想利用LVM的快照功能实现几乎热备,需要满足如下条件: 1.数据文件必须要逻辑卷上 2.此逻辑卷所在卷组必须要有足够空间存储快照卷 3.数据文件和事务日志要在同一个逻辑卷是上. 实现步骤如下: 1.打开会话,施加读锁,锁定所有表,且执行日志滚动 mysql> flu

利用 AWK 的数值计算功能提升工作效率(转载)

Awk 是一种优秀的文本样式扫描和处理工具.转文侧重介绍了 awk 在数值计算方面的运用,并通过几个实际工作中的例子,阐述了如何利用 awk 的计算功能来提高我们的工作效率.转文源自IBM Bluemix,链接:http://www.ibm.com/developerworks/cn/linux/l-cn-awkinwork/ Awk 是一种优秀的文本样式扫描和处理工具. Awk 与 sed 和 grep 有些相似, 但功能比后者强不少. awk 提供的功能包括样式载入, 流控制,数学运算符,进

grub legacy练习 之 单用户模式修改root账户口令,并为grub菜单项设置密码保护功能

通过进入单用户模式来修改root账户口令,并为grub菜单项设置密码保护功能: 直接进入系统后,输入e, 进入此界面后,输入e 然后输入single: 回车键输入之后,在摁b键启动: 此时不用输密码:直接可以更改root密码: 用grub-md5-crypt,加密一段密码,我加密的是123456:然后写入到/etc/grub.conf 发现开机界面,想进入单用户模式就必须输入p键才能进入: 输入密码123456后,才可以进入单用户模式: 原文地址:http://blog.51cto.com/li

iOS中UIWindow妙用(一) App 的密码保护功能

我们知道UiWindow 继承自UIView,所以UIWindow 除了具有UIView 的所有功能外,还有一些特有的属性方法,最常用的就是程序刚刚启动时,调用UIwindow的makeKeyAndVisible使整个程序可见. - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { // Override point for cu

如何利用log4Net自定义属性配置功能记录完整的日志信息

log4Net作为专业的log记录控件,对于它的强大功能大家一定不陌生.下面我将详细介绍如何利用其自定义属性,让日志信息更完整. 一,创建测试工程,log4Net组件可以自己从网上下载,也可通过Nuget进行安装. 二,创建日志模型及数据库表,因为我们的日志信息可以输出为文本,也可以输出到数据库. 三,添加MyLayout,MyPatternConverter类扩展PatternLayout. 四,添加Log4Net.config文件,进行输入方式定义. <?xml version="1.

利用python收发邮件功能实现远程电脑的控制

功能并非原创, 只是重复实现了 http://codecloud.net/python-control-128.html 中描述的功能. 实现功能: 通过给固定邮件地址发送命令(包含在主题中)的方式控制远程电脑实现相应功能(譬如关机等, 可以根据实际需要实现更复杂的功能) 实现原理: 远程电脑不断(每隔10s)利用 python 脚本检查邮件服务器是否有新邮件, 如有则对邮件进行分析, 如果包含可执行命令, 则执行相应命令 你需要的: 装有 PYTHON 的 PC; 最好两个邮箱(一个用于接收命

利用PYTHON设计计算器功能

通过利用PYTHON 设计处理计算器的功能如: 1 - 2 * ( (60-30 +(-40/5) * (9-2*5/3 + 7 /3*99/4*2998 +10 * 568/14 ))- (-4*3)/(16-3*2)) 我的处理计算基本思路是: 解题思路是,需要优先处理内层括号运算--外层括号运算--先乘除后加减的原则:1.正则处理用户输入的字符串,然后对其进行判断,判断计算公式是否有括号,有就先将计算公式进行正则处理,先获取最里层的每一个数据,然后一一计算 所要用到的正则是: inner

C# Unity依赖注入利用Attribute实现AOP功能

使用场景? 很多时候, 我们定义一个功能, 当我们要对这个功能进行扩展的时候, 按照常规的思路, 我们一般都是利用OOP的思想, 在原有的功能上进行扩展. 那么有没有一种东西, 可以实现当我们需要扩展这个功能的时候, 在不修改原来的功能代码的情况下实现, 这就是下面要说的到Unity. 1.准备工作 为项目添加NuGet包, 搜索Unity并且安装. 在使用的项目中添加Unity的相关引用 using Microsoft.Practices.Unity.InterceptionExtension