关于textview的限制文本字数的问题会汇总
2015-10-09 16:40
519 查看
1.首先,我们来看看最初的设计。
//限制字符长度
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if (range.location>= 200)
{
return NO;
}
else
{
return YES;
}
}
直接对range的location进行判断。那这个range的location 是光标所在的位置嘛。如果把光标移到textview 的前端,那就可以输入很多个字符。
2.再来看改了之后:
//限制字符长度
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if ([text isEqualToString:@""] && range.length > 0) {
return YES;
}
else {
if (textView.text.length - range.length + text.length > 10) {//至于这个range.length是0而已,也无需加上。
return NO;
}
else {
return YES;
}
}
}
这样写也是有问题的,一个是不能对联想输入做处理,二是不能对复制粘贴做精确的处理。当进行复制粘贴时,text大于10,那text还是无法加入到textView.text中来。
3.看下面这样的代码
//限制字符长度
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text{
if ([text isEqualToString:@""] && range.length >
0)
{ return
YES;
}//为什么需要加上yes.为了防止bug.删除不了的现象。
else
{
NSString *str = [NSString
stringWithFormat:@"%@%@", textView.text, text];
if (str.length >
BOOKMARK_WORD_LIMIT)
{
textView.text = [str
substringToIndex:BOOKMARK_WORD_LIMIT];
return NO;
}
else
{
return YES;
}
}
}
-(void)textViewDidChange:(UITextView *)textView{
//该判断用于联想输入
if (textView.text.length >
BOOKMARK_WORD_LIMIT)
{
textView.text = [textView.text
substringToIndex:BOOKMARK_WORD_LIMIT];
}
}
//限制字符长度
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if (range.location>= 200)
{
return NO;
}
else
{
return YES;
}
}
直接对range的location进行判断。那这个range的location 是光标所在的位置嘛。如果把光标移到textview 的前端,那就可以输入很多个字符。
2.再来看改了之后:
//限制字符长度
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{
if ([text isEqualToString:@""] && range.length > 0) {
return YES;
}
else {
if (textView.text.length - range.length + text.length > 10) {//至于这个range.length是0而已,也无需加上。
return NO;
}
else {
return YES;
}
}
}
这样写也是有问题的,一个是不能对联想输入做处理,二是不能对复制粘贴做精确的处理。当进行复制粘贴时,text大于10,那text还是无法加入到textView.text中来。
3.看下面这样的代码
//限制字符长度
-(BOOL) textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range
replacementText:(NSString *)text{
if ([text isEqualToString:@""] && range.length >
0)
{ return
YES;
}//为什么需要加上yes.为了防止bug.删除不了的现象。
else
{
NSString *str = [NSString
stringWithFormat:@"%@%@", textView.text, text];
if (str.length >
BOOKMARK_WORD_LIMIT)
{
textView.text = [str
substringToIndex:BOOKMARK_WORD_LIMIT];
return NO;
}
else
{
return YES;
}
}
}
-(void)textViewDidChange:(UITextView *)textView{
//该判断用于联想输入
if (textView.text.length >
BOOKMARK_WORD_LIMIT)
{
textView.text = [textView.text
substringToIndex:BOOKMARK_WORD_LIMIT];
}
}
相关文章推荐
- linux中banner命令的用法
- 弱符号与强符号概念
- Android反射机制实现与原理
- 统计各班成绩第一名的同学信息
- 分享关于Entity Framework 进行CRUD操作实验的结果
- Tengine高性能部署之—负载均衡配置
- shell 函数的简单用法
- Android中联系人和通话记录详解(2)
- 使用Android Studio签名打包APK
- Spring AOP 学习例子
- android控件DatePicker的使用
- 关于oc的学习笔记 -copy和mutableCopy
- SharedPreferences保存对象
- Solr使用入门指南
- 软件测试管理概述
- html学习笔记一
- 更改myeclipse中的@author
- Xcode7 联网问题
- ListView.setSelection(int)方法执行流程源码解析(API 21)
- Sublime Text 必备插件