美文网首页
实现更安全、高扩展的自定义键盘 非UIButton

实现更安全、高扩展的自定义键盘 非UIButton

作者: wangtieshan | 来源:发表于2017-10-14 10:15 被阅读0次

    自定义键盘的原因

    自定义键盘的封装网上的例子比比皆是,有的封装的非常完美,直接pod 集成到项目中便可以简单的使用,可是为什么我还要自定义一个呢?
    一不是不是为了显摆,二不是网上的功能不满足需求,也不是不够便利
    最主要的原因是不够安全!!!

    为什么说不够安全

    用过 Reveal 的同学都知道,可以抓到任何的 UI 控件,并且完美的展示各个视图的层级。
    当然这只是一款软件,一种情况,所谓防小人不妨君子,我们需要更安全的键盘

    当前网上的许多键盘都是通过 UIButton 堆起来,这样事件控制方便,title 设置便利,UI设计简易,不用考虑触摸事件等等诸多好处,但是。。。

    正是因为如此的便利,有心之人想要抓取你的点击事件、title等等也是非常的便利

    苹果官方键盘

    苹果官方的键盘,通过 Reveal 可以看到,只要是涉及到具体的实体按键,底层都是一张图片。
    至于点击了哪个按钮,可以通过监控触摸事件的变化,来对修饰图层做修改,从而实现一个完美的键盘。
    官方键盘的优点:

    • 触摸事件的回调频率在一秒内可以回调几十次
    • 所有的字母都是在一张图片上面,几乎无法抓取到 title
    • 没有的具体的按钮可以监控点击事件,点击的点
    • 图片更加的利于自定义各种复杂界面
      从以上优点可以看出,官方的键盘在安全性方面是相当高的

    自定义键盘

    参考官方的键盘,写出了自己的自定义键盘,也是底层图片实现,监控触摸事件
    没有安全只有更安全,这里自定义键盘只是相对于 UIButton 堆积起来的键盘,相对的更加安全,并不是绝对安全,请理解 “更加安全” 这个关键字

    完善

    由于当前时间比较少,只是设计了几款常用的键盘,需要完善的地方还是有很多,请同学多提建议

    已完成:

    • 可自定义每个按键,就是可以定义按键模板
    • 删除事件已经集成完毕
    • 回调事件已经集成完毕
    • 触摸事件已经封装完善,在触摸了每个字母时都有回调
    • 每个按键的点击事件已经完成,只需在事件中作出不同的处理即可

    未完成:

    • 键盘上字母未实现随机
    • 简化调用

    使用介绍

    /**

    • 本库主要是为了实现一个自定义键盘
      1. 所有的按键均是图片组成,最大程度上避免了恶意监控控件(UIButton,UILabel)等,防止获取键盘内容
      1. 所有的事件均通过手指(触摸)的移动,来控制按键变化
    • 触摸事件回调频率高,并且触摸事件中没有数据,最大程度上避免了恶意监控触摸事件,最大程度上避免了恶意监控控件(UIButton,UILabel
      1. 此键盘功能是建立在平台的思想上开发的。做的是一个平台,所有使用者均可以简单的设置自己需要的键盘。
    • 底层逻辑已全部处理完毕,只需要在应用层开发自定义键盘即可
    • KKeyBoardView
      1. 键盘实体。
      1. 对外暴漏接口和回调
      1. 管理所有键盘视图,并负责切换键盘
    • KKeyBoardMainView
      1. 键盘主视图
      1. 管理所有的按键
      1. 处理所有的触摸事件
      1. 将触摸事件转化为按键的状态,将按键状态通知按键
    • KKeyBoardItemView
      1. 按键实体。所有按键的基类
      1. 暴漏给子类按键,重写按键高亮和正常态的方法
    • KKeyBoardNormalView
    • 已实现的普通文本按键。可以直接使用。
    • 根据 title subTitle 自动生成默认风格按键
    • KKeyBoardDeleteView
    • 已实现的删除按键。可以直接使用。
    • 删除按键的一个实现。主要处理长按事件,当按下不松手时,连续回调删除的事件
    • KKShiftItemView
    • 已实现的shift按键。可以直接使用。
    • shift 按键的一个实现。增加了大小写处理
    • Implement 文件夹下的文件
      1. 已经实现了几种键盘。
    • 字母键盘、身份证有效期键盘、身份证号键盘、数字键盘
      1. 已经实现了几种按键
    • 数字按键、文本按键、删除按键
      1. 可以理解为 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 运行

    【声明】

    此公共库为个人所有,业余时间编写,与任何公司或组织均无关系

    使用该公共库的组织或者公司,本人有权收回使用权

    相关文章

      网友评论

          本文标题:实现更安全、高扩展的自定义键盘 非UIButton

          本文链接:https://www.haomeiwen.com/subject/ewlxuxtx.html