/RestrictTextField

有限制输入功能的输入框 Swift & Objective-C

Primary LanguageSwift

RestrictTextField

有限制输入功能的输入框,支持Swift 和 OC版本 SSYLimitTextField.swift&SSYRestrictedFiled.h

如何使用

  1. 下载demo
  2. 将SSYLimitTextField这个文件夹下的SSYLimitTextField.swift文件拖入你的项目即可(OCSSYRestrictedFiled)

功能举例

请看demo中的

  • 金额输入(限制2位小数输入)
  • 限制最大的输入长度
  • 中文限制
  • 禁止输入emoji(请看OCDemo中[SSYRestrictField createNOEmoji]例子)
  • 其他

特点

  • 对复制粘贴也完全判断
  • 对超出的长度不会进行尾部截断,而是截取当前插入的字符串
  • 监控textfiled输入改变后的内容,使用timeThreshold设置监听改变的时间,使用txtChange这个block获取改变的内容
  • 继承UITextField,外界也可以对SSYLimitTextField进行完全的UITextField代理监听.(这点受到InputKit启发)

原理

  • 主要是通过外界传入的限制(block判断 , 正则表达式)
  • 针对键盘的类型做出判断,对于有候选字的键盘当前就已知有zh-Hans,如果有其他的键盘,例如日文,请自行在markedTextRangeLanguages属性中加入

说明

  • SSYLimitTextField这个文件夹下另外2个文件(SSYRegEx 和 SSYLimitTextField+Create)都是辅助文件,可以用可以不用.
  • 有bug的话请反馈

demo样式

demoImage

已知待优化点

在直接给textfield进行赋值后,进行删除字符操作会有问题。

所以直接赋值时候需要先校验被赋的值

重现过程: textfield 限制6位输入,但是直接赋值(textField.text = "12345678")到了8位,因为不走delegate所以不会进行判断。 然后进行删除操作。