老规矩 Demo地址
看下我们自定义的键盘效果
项目中需求不能让用户使用汉字输入法,同时不能联想等等。说了一大堆。没办法自己手动实现一下只带大小写英文和数字输入法以及标点符号输入。
首先还是要先感谢@Misaki_yuyi这篇文章的思路iOS 自定义数字和字母键盘
基于自定义的基础上实现了基本的需求
大致实现思路如下
1.主键盘26个按钮采用UICollectionView实现,通过自定义flowlayout显示自动布局和定义大小间距
2.我们看到的键盘切换,以及底部几个按钮采用自定义button来实现
3.键盘父视图采用继承UIView实现,数据处理全部放在ZMKeyBoardView内部进行实现处理,
4.外部调用只需要创建ZMKeyBoardView,让当前的textfield的inputview = ZMKeyBoardView() 即可
看下代码层
大致说下根目录作用,采用MVC实现
1.image文件夹主要放自定义键盘需要的图片
2.util中的ZMKeyBoardUtil主要放置需要用到的数据源逻辑处理,方便我们使用的时候直接调用
3.ZMKeyBoadModel就是键盘需要用的模型
4.ZMCollectionViewCell是我们实现的自定义cell。ZMCollectionLayout是我们自定义的layout来满足指定间距大小动态化布局的。
5.。ZMKeyBoardView就是我们的父视图,所有的自定义键盘控件添加,逻辑处理都放在这里边。
实现的话,主要的26个英文item采用的是collectionView,分三个区。样式放在了cell里边,布局属性放到了自定义layout里边。其他5个按钮统一使用ZMKeyBoardButtonView进行实现。已经开出需要用到的方法,比如点击高亮,切换处理。等
调用比较方便,调用示例
let keyBoards = ZMKeyBoardView()
textfield1.inputView = keyBoards
keyBoards.inputSource = textfield1