最近做项目有一个特殊需求,就是需要限制一个TextField的输入文本的长度在一定范围内(注意,不是字数),上网查了一圈没有找到类似文章,这里把我的方法写进来,mark一下:

1、对TextField添加监听函数:

  1. textField.addTarget(self, action: "textFieldTextDidChange:", forControlEvents: UIControlEvents.EditingChanged)

2、在输入内容变化时进行处理:

  1. func textFieldTextDidChange(textField:UITextField) {
  2. if let _ = textField.text {
  3. if let positionRange = textField.markedTextRange {
  4. if let _ = textField.positionFromPosition(positionRange.start, offset: 0) {
  5. //正在使用拼音,不进行校验
  6. } else {
  7. //不在使用拼音,进行校验
  8. self.checkTextFieldLengthAndModify(textField)
  9. }
  10. } else {
  11. //不在使用拼音,进行校验
  12. self.checkTextFieldLengthAndModify(textField)
  13. }
  14. }
  15. }

3、实现校验方法

  1. //检查输入框的文字是否超长,如果超出长度则做截短
  2. func checkTextFieldLengthAndModify(textField:UITextField) {
  3. if let text = textField.text {
  4. if self.checkTextFielLength(textField, str: text) {
  5. //长度正常,不处理
  6. } else {
  7. //超出长度,开始处理
  8. self.view.makeToastCenter("输入文字过长")
  9.  
  10. let len = text.length
  11. let txt = text as NSString
  12. if len > 0 {
  13. //进行截短,看是否超长,如果不超长,则继续截短,直到不超长为止
  14. //Exp:
  15. //apple
  16. //appl
  17. //app
  18. for var i = len-1; i >= 0; i-- {
  19. let txt_s = txt.substringToIndex(i)
  20. //print("txt_s : \(txt_s)")
  21. if self.checkTextFielLength(textField, str: txt_s) {
  22. //就截取到这了
  23. textField.text = txt_s
  24. break
  25. } else {
  26. //继续截取
  27. }
  28. }
  29. }
  30. }
  31. }
  32. }

4、实现checkTextFielLength,判断文字是否超出输入框长度

  1. func checkTextFielLength(textField: UITextField, str: NSString) -> Bool {
  2. let rect = str.boundingRectWithSize(CGSizeMake(CGFloat(MAXFLOAT), CGFloat(MAXFLOAT)), options: .UsesLineFragmentOrigin, attributes: textField.defaultTextAttributes, context: nil)
  3. if rect.width > textField.width {
  4. return false
  5. } else {
  6. return true
  7. }
  8. }

这里的长度限制是根据UITextField的长度来限制的,你也可以根据自己的需求来设定限制的长度。

iOS(Swift) TextField限制输入文本的长度(不是字数)的更多相关文章

  1. iOS 设置textfield的最大文本长度

    //在现实开发中  需要控制文本输入长度 并实时做短信验证,代码如下 [self.textField addTarget:self action:@selector(codeChange:) forC ...

  2. ios设置textField只能输入数字用于电话号码

    首先在.xib中将UITextField的Keyboard设置为Number Pad,但是使用时键盘会切回别的键盘无法对内容进行校验.通过神奇的百度我知道了通过以下方法可以解决这样的问题: 首先让.x ...

  3. IOS - 获取UITextField的输入文本

    当UITextField文本改变时, 依据内容更新数据, 通过写监听事件就可以. 加入监听: [timesField addTarget:self action:@selector(textField ...

  4. iOS textfield 限制输入字数长度

    iOS textfield限制输入的最大长度 [self.textFiled addTarget:self action:@selector(textFieldDidChange:) forContr ...

  5. iOS TextField输入限制(限制长度、只能输入数字,只能输入数字字母……)

    项目中各个地方都会用到TextField,textField的输入也会有各种需求,各种限制,每次用到的时候要重写一遍这些限制,导致各种垃圾代码,各种重复,有一天,我终于看不下去了,于是把textFie ...

  6. iOS swift 代理协议

    swift中的代理实现和oc中是有区别的 protocol HXQLimitedTextFieldDelegate{ func test() } 代理中默认所有方法都是required,如果需要某个代 ...

  7. iOS 限制TextField输入长度(标准)

    iOS 限制TextField输入长度(标准) 网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入 ...

  8. iOS之限制TextField的输入长度

    网上有很多限制textField输入长度方法,但是我觉得都不是很完美,准确来说可以说是不符合实际开发的要求,因此在这里整理一下textField限制输入长度的方法.我所采用的并不是监听方法而是最不同的 ...

  9. iOS对textField进行字符长度限制的办法

    在项目开发过程中,遇到这么一个需求,编辑标签时,输入的最大长度需要限制为24个字节. 查阅了一些材料,并参考了之前项目的相关处理办法,今天在这里总结一下解决方案. 1.写一个截取字符串的方法,将超长的 ...

随机推荐

  1. javascript之高级函数应用思想

    1.级联函数:应用对象方法调用的连写 function A(){ this.a = ''; this.b = ''; this.c = ''; } //改造一下 A.prototype = { A.p ...

  2. oracle pl/sql的操作大全

    --删除该用户及下面的所有关联 DROP USER fspdrs CASCADE; --创建一个用户 create user fspdrs identified " default tabl ...

  3. 【CLR VIA C#】读书笔记

    工作几年了才看,记录下笔记备忘. 章节 笔记 1.CLR的执行模型 公共语言运行时(Common Language Runtime,CLR) 源代码-->编译器检查语法和分析源代码-->托 ...

  4. [OpenXml] Generate excel in memory and dump to file

    public static void GenerateExcelFromStream() { using (MemoryStream memoryStream = new MemoryStream() ...

  5. PHP中CURL技术模拟登陆抓取网站信息,用与微信公众平台成绩查询

    伴随微信的红火,微信公众平台成为许多开发者的下一个目标.笔者本身对于这种新鲜事物没有如此多的吸引力.但是最近有朋友帮忙开发微信公众平台中一个成绩查询的功能.于是便在空余时间研究了一番. 主要的实现步骤 ...

  6. ffmpeg yuv转h264

    ffmpeg -s 176x144 -i  container_qcif_176_144.yuv -b:v 7776k -r 25 -vcodec libx264 ds.h264

  7. kappa 一致性系数计算实例

    kappa系数在遥感分类图像的精度评估方面有重要的应用,因此学会计算kappa系数是必要的 实例1 实例2

  8. Javacript 客户端保存数据[ locaStorage ]

    1.通常程序员们会使用Cookie进行一些小量的数据储存在客户端浏览器,但孰不知这样会造成不必要的带宽浪费 ,可使用 js 中的 locaStorage 来替代cookie进行存储,但不支持IE8以下 ...

  9. iOS 的 Gif 渲染引擎 FLAnimatedImage-b

    公司的项目有个首页加载一张2M左右的git图,刚做的时候是使用的SDWebImage里面的方法: + (UIImage *)sd_animatedGIFNamed:(NSString *)name; ...

  10. 后台字符串转化成json

    function remotecontrol() { var progressbar = $("#progressbar"); $.ajax({ url: myurl, type: ...