实际开发当中很多要用到对UItextfield或者UItextfield输入的监听,限制字数及其他一些处理,但是由于中文输入法的键盘上有联想、推荐的功能,所以使用这两个控件的代理方法可能导致文本内容长度上有些不符合预期,导致越界使处理条件出错,所以可以考虑使用以下方法来实现文本控制条件:
1首先需要注册通知:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(onTextViewEditChanged:) name:@"UITextViewTextDidChangeNotification" object:nil];
2实现监听方法:
// 监听字符变化,并处理
- (void)onTextViewEditChanged:(NSNotification )obj
{
UITextView textView = (UITextView )objobject;
selfplaceholderLabhidden = textViewhasText;
if (ReportTextViewMaxLength > 0)
{
NSString toBeString = textViewtext;
//获取当前高亮
UITextRange selectedRange = [textView markedTextRange];
UITextPosition position = [textView positionFromPosition:selectedRangestart offset:0];
// 如果没有高亮选择,则对已经输入的文字进行字数统计、限制
if (!position)
{
if (toBeStringlength > ReportTextViewMaxLength)
{
[textView shake];
[MBProgressHUD show:@"举报内容最多为60字!" icon:nil view:[UIApplication sharedApplication]keyWindow hideAfterDelay:10];
NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:ReportTextViewMaxLength];
if (rangeIndexlength == 1)
{
textViewtext = [toBeString substringToIndex:ReportTextViewMaxLength];
}
else
{
NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, ReportTextViewMaxLength)];
textViewtext = [toBeString substringWithRange:rangeRange];
}
}
}
}
//这里可以实现其他需要的处理。
}
}
3最后不要忘了在页面销毁的时候移除通知:
[[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextViewTextDidChangeNotification" object:nil];
为了防止其他初学者跟我一下,一边学一边谷歌,百度的同学们,少走弯路。对于限制输入个数,这个方法是网上暂时没有的思想,自己想出来。之前2天前写过,单误 *** 作给删除了。如有帮助请仔细看看,自认为挺好的。。。。。
比较:UITextView以及UITextField的限制方法都是一样的。不一样的是
UITextView的代理方法中直接有:
然而UITextField没有,但是UITextField的代理方法最下面有这样一段:
当时,我看到这个感觉跟上面的差不多,都是模式是TextDidChange。
查了一下Notification的意思,通知,所及简而言之:
[NSNotificationCenter defaultCenter]中添加对于UITextField的通知事件
所以,这两个控件都是相同的,我就拿UITextView举例。开始步入正轨。。。。。
分析:
函数的返回值 YES 以及 NO;YES是允许修改textview的值, NO是不允许修改textview的值
我们会用到这两个函数,知道大概的什么时候会调用,那么就来分析一下都有什么情况。
按照原始的认知:英文占一个字符,中文占两个字符。
情况一:
1)全部英文 2)全部中文 3)英文以及中文的结合
情况二:
因为刚接触ios也就有认识来一样东西,叫做表情,类似
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)