前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >实现更安全、高扩展的自定义键盘 非UIButton

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

作者头像
onety码生
发布2018-11-21 11:18:31
7710
发布2018-11-21 11:18:31
举报
文章被收录于专栏:码生

自定义键盘的原因

自定义键盘的封装网上的例子比比皆是,有的封装的非常完美,直接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,可以仿照写法自定义按键和键盘

*/

代码语言:javascript
复制
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 运行

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.10.14 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义键盘的原因
  • 为什么说不够安全
  • 苹果官方键盘
  • 自定义键盘
  • 完善
  • 使用介绍
  • 因为时间原因,未使用pod集成。但是 podspec 文件已经写好,查看demo即可看到,先本地pod接入
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档