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

1、对TextField添加监听函数:

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

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

func textFieldTextDidChange(textField:UITextField) {
if let _ = textField.text {
if let positionRange = textField.markedTextRange {
if let _ = textField.positionFromPosition(positionRange.start, offset: 0) {
//正在使用拼音,不进行校验
} else {
//不在使用拼音,进行校验
self.checkTextFieldLengthAndModify(textField)
}
} else {
//不在使用拼音,进行校验
self.checkTextFieldLengthAndModify(textField)
}
}
}

3、实现校验方法

//检查输入框的文字是否超长,如果超出长度则做截短
func checkTextFieldLengthAndModify(textField:UITextField) {
if let text = textField.text {
if self.checkTextFielLength(textField, str: text) {
//长度正常,不处理
} else {
//超出长度,开始处理
self.view.makeToastCenter("输入文字过长") let len = text.length
let txt = text as NSString
if len > 0 {
//进行截短,看是否超长,如果不超长,则继续截短,直到不超长为止
//Exp:
//apple
//appl
//app
for var i = len-1; i >= 0; i-- {
let txt_s = txt.substringToIndex(i)
//print("txt_s : \(txt_s)")
if self.checkTextFielLength(textField, str: txt_s) {
//就截取到这了
textField.text = txt_s
break
} else {
//继续截取
}
}
}
}
}
}

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

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

这里的长度限制是根据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. 个人站长如何使用svn发布到服务器不遗漏文件

    作为个人站长,最最头疼的一件事情就是在本地开发好代码之后,上传的时候要去服务器上一个一个文件进行覆盖,添加操作:是人难免出错,避免这种情况的方法: 开发者最好是在本地有一个代码库,创建好代码库之后,至 ...

  2. Linux C 程序 字符串函数(12)

    字符串函数C语言的字符串处理函数1.puts函数 //把一个以'\0'结尾的字符串输出到屏幕 char a[] = "Welcome to"; char *p = "Li ...

  3. Check Big/Little Endian

    Little endian:Low memory address stores low byte value.(eg.  short int 0x2211   0xbfd05c0e->0x11 ...

  4. 在Windows 7下面IIS7的安装和 配置ASP的正确方法

    在Windows 7下如何安装IIS7,以及IIS7在安装过程中的一些需要注意的设置,以及在IIS7下配置ASP的正确方法. 一.进入Windows 7的 控制面板,选择左侧的打开或关闭Windows ...

  5. Ecshop实现仿Taobao地区运费模板

    目录: 1.Ecshop后台配送方式创建 2.商品绑定配送方式的运费模板 2.1 数据表“ecs_goods”增加一个字段,执行下面SQL语句: 2.2 后台添加/编辑 商品 调出已经安装配送方式 & ...

  6. Demo学习: ClientEvents

    ClientEvents 在控件的ClientEvents属性里嵌入JS代码,增加了开发的灵活性. 分别在TUniPanel和TUniTimer的 ClientEvents事件里添加了JS代码: 1. ...

  7. WPF中Image的Stretch属性

    有时候我们在WPF程序中设置了图片的Width和Height,但图片显示出来的宽和高并不是我们预期的效果,这实际上是由于Image的默认Stretch属性导致的 Image的Stretch属性默认为U ...

  8. ARC工程中添加非ARC文件

    转载自:http://blog.csdn.net/zhenweicao/article/details/16988543 分类: IOS2013-11-27 17:02 626人阅读 评论(0) 收藏 ...

  9. 在Hadoop分布式文件系统的索引和搜索

    FROM:http://www.drdobbs.com/parallel/indexing-and-searching-on-a-hadoop-distr/226300241?pgno=3 在今天的信 ...

  10. Indri中的动态文档索引技术

    Indri中的动态文档索引技术 戴维 译 摘要: Indri 动态文档索引的实现技术,支持在更新索引的同时处理用户在线查询请求. 文本搜索引擎曾被设计为针对固定的文档集合进行查询,对不少应用来说,这种 ...