目前电子设备的密码基本有四大类:字符密码、手势解锁、指纹密码、人脸识别。
字符密码无非就是各种字符按照一定顺序组在一起,在产品中几乎都可以看到他的身影。指纹密码和人脸识别需要硬件设备的支持,不是软件开发人员能够控制的。手势解锁其实是一种特殊的字符密码,每一个按钮代码一个字符,一共九个字符,按照设定的规则连接在一起就组成了一串字符。
一、手势密码的逻辑
- 自定义view,使用九宫格排布九个按钮,并把按钮放在自定义view上;
- 监听view的手势事件,当点击view时判断触摸点是否在按钮上;
- 如果点击事件在按钮上就把按钮的状态变为高亮状态,并把按钮放到选中栈中,否则不做任何处理;
- 当滑动事件发生时,判断滑动轨迹是否在按钮范围内;
- 如果滑动轨迹在按钮范围内,就把按钮的状态变为高亮状态,并把按钮放到选中栈中,否则不做任何处理;
- 以第一个高亮按钮为出发点绘制直线,按照选中栈中的顺序依次绘制;
- 当连线按钮达到限制条件时(默认选中5个),把每一个按钮绑定的数字组成字符串通知给代理;
- 当取消事件发生时,把已选按钮状态恢复到之前未高亮状态。
二、完整代码及效果
UI界面
效果预览
ViewController.m
1 |
|
DBGestureLockView
1 | // DBGestureLockView.h |