实现更安全、高扩展的自定义键盘 非UIButton
2017-10-14 本文已影响0人
wangtieshan
自定义键盘的原因
自定义键盘的封装网上的例子比比皆是,有的封装的非常完美,直接pod 集成到项目中便可以简单的使用,可是为什么我还要自定义一个呢?
一不是不是为了显摆,二不是网上的功能不满足需求,也不是不够便利
最主要的原因是不够安全!!!
为什么说不够安全
用过 Reveal 的同学都知道,可以抓到任何的 UI 控件,并且完美的展示各个视图的层级。
当然这只是一款软件,一种情况,所谓防小人不妨君子,我们需要更安全的键盘
当前网上的许多键盘都是通过 UIButton 堆起来,这样事件控制方便,title 设置便利,UI设计简易,不用考虑触摸事件等等诸多好处,但是。。。
正是因为如此的便利,有心之人想要抓取你的点击事件、title等等也是非常的便利
苹果官方键盘
苹果官方的键盘,通过 Reveal 可以看到,只要是涉及到具体的实体按键,底层都是一张图片。
至于点击了哪个按钮,可以通过监控触摸事件的变化,来对修饰图层做修改,从而实现一个完美的键盘。
官方键盘的优点:
- 触摸事件的回调频率在一秒内可以回调几十次
- 所有的字母都是在一张图片上面,几乎无法抓取到 title
- 没有的具体的按钮可以监控点击事件,点击的点
- 图片更加的利于自定义各种复杂界面
从以上优点可以看出,官方的键盘在安全性方面是相当高的
自定义键盘
参考官方的键盘,写出了自己的自定义键盘,也是底层图片实现,监控触摸事件
没有安全只有更安全,这里自定义键盘只是相对于 UIButton 堆积起来的键盘,相对的更加安全,并不是绝对安全,请理解 “更加安全” 这个关键字
完善
由于当前时间比较少,只是设计了几款常用的键盘,需要完善的地方还是有很多,请同学多提建议
已完成:
- 可自定义每个按键,就是可以定义按键模板
- 删除事件已经集成完毕
- 回调事件已经集成完毕
- 触摸事件已经封装完善,在触摸了每个字母时都有回调
- 每个按键的点击事件已经完成,只需在事件中作出不同的处理即可
未完成:
- 键盘上字母未实现随机
- 简化调用
使用介绍
/**
- 本库主要是为了实现一个自定义键盘
- 所有的按键均是图片组成,最大程度上避免了恶意监控控件(UIButton,UILabel)等,防止获取键盘内容
- 所有的事件均通过手指(触摸)的移动,来控制按键变化
- 触摸事件回调频率高,并且触摸事件中没有数据,最大程度上避免了恶意监控触摸事件,最大程度上避免了恶意监控控件(UIButton,UILabel
- 此键盘功能是建立在
平台
的思想上开发的。做的是一个平台,所有使用者均可以简单的设置自己需要的键盘。
- 此键盘功能是建立在
- 底层逻辑已全部处理完毕,只需要在应用层开发自定义键盘即可
- KKeyBoardView
- 键盘实体。
- 对外暴漏接口和回调
- 管理所有键盘视图,并负责切换键盘
- KKeyBoardMainView
- 键盘主视图
- 管理所有的按键
- 处理所有的触摸事件
- 将触摸事件转化为按键的状态,将按键状态通知按键
- KKeyBoardItemView
- 按键实体。所有按键的基类
- 暴漏给子类按键,重写按键高亮和正常态的方法
- KKeyBoardNormalView
- 已实现的普通文本按键。可以直接使用。
- 根据 title subTitle 自动生成默认风格按键
- KKeyBoardDeleteView
- 已实现的删除按键。可以直接使用。
- 删除按键的一个实现。主要处理长按事件,当按下不松手时,连续回调删除的事件
- KKShiftItemView
- 已实现的shift按键。可以直接使用。
- shift 按键的一个实现。增加了大小写处理
- Implement 文件夹下的文件
- 已经实现了几种键盘。
- 字母键盘、身份证有效期键盘、身份证号键盘、数字键盘
- 已经实现了几种按键
- 数字按键、文本按键、删除按键
- 可以理解为 Demo,可以仿照写法自定义按键和键盘
*/
public enum KKeyBoardType {
/// 纯数字键盘
case number
/// 含有小数的数字键盘
case decimalNumber
/// ASC 码键盘
case letter
/// 大写的ASC 键盘
case upperLetter
/// 小写的ASC 键盘
case lowerLetter
/// 身份证有效期
case idValid
/// 身份证号
case idNumber
/**** 以下两个键盘还没有实现 ****/
/// 含有小数点的键盘
case decimalPadNum
/// 数字和字母键盘
case numAndLetter
}
因为时间原因,未使用pod集成。但是 podspec 文件已经写好,查看demo即可看到,先本地pod接入
纯字母键盘 纯数字键盘 身份证有效期键盘 身份证号键盘源码在 我的github 上
【注】请使用 Swift 3 运行
【声明】
此公共库为个人所有,业余时间编写,与任何公司或组织均无关系
使用该公共库的组织或者公司,本人有权收回使用权