UITextView textViewDidChange 限制字符长度崩溃问题 解决办法

为了限制uitextview输入的字符数,一般采取如下做法:

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range

replacementText:(NSString *)text

{

//判断输入的字符,是否超过界限

NSString *str = [NSString stringWithFormat:@"%@%@", textView.text, text];

if (str.length > kMaxLen)

{

textView.text = [str substringToIndex:kMaxLen];

return NO;

}

return YES;

}

但是,在汉语拼音输入状态下,如果有键盘联想汉字输入,则无法回调到该函数,所以可以一直联想输入下去,做不到限制字符数量的目的,为了解决这个问题,我们在textViewDidChange进行限制。

- (void)textViewDidChange:(UITextView *)textView

{

if ( textView.text.length > kMaxLen)

{

textView.text = [textView.text substringToIndex:kMaxLen];

}

此时,如果在拼音状态下输入会有crash ,因为汉语拼音状态下,联想出的汉字等待用户选择,在用户选择前的状态下,不能改变textView.text。解决办法:

- (void)textViewDidChange:(UITextView *)textView

{

if (textView.markedTextRange == nil && textView.text.length > kMaxLen)  //加上 textView.markedTextRange == nil判断,当此属性为nil时,代表不在这种联想输入等待确定状态。

{

textView.text = [textView.text substringToIndex:kMaxLen];

}

时间: 2024-08-02 01:49:07

UITextView textViewDidChange 限制字符长度崩溃问题 解决办法的相关文章

IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法

当打开IIS管理器,或配置网站时提示错误:配置文件的XML格式不正确 且是applicationHost.config的问题,那么肯定是applicationHost.config被破坏,IIS就崩溃. 解决办法就是恢复applicationHost.config 先检查C:\Windows\System32\inetsrv\config目录下的applicationHost.config文件,最好备份一份 使用IIS提供的AppCmd.exe的restore功能恢复applicationHos

KVO崩溃之解决办法

今天在复习代码试着自己写的时候,用了下kvo,写完后,运行程序发现程序崩了,一开始没想到时kvo的原因,定位也没定位到崩溃信息处,于是找了一会,大概想了一下原因,也就是写了kvo后发现程序崩溃的,于是想到可能是kvo的问题,上网一查关于kvo崩溃的问题,果然有啊,原因就是在我们添加观察者的时候,观察者和被观察者都不会被retain,然而在这些对象释放后,监听信息却还在,KVO做的处理就是直接让程序崩溃,解决办法就是重写delloc,在delloc里面用removeObserver:forKeyP

[转] IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法

IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法 源文件:http://www.cnblogs.com/yuejin/p/3385584.html 当打开IIS管理器,或配置网站时提示错误:配置文件的XML格式不正确 且是applicationHost.config的问题,那么肯定是applicationHost.config被破坏,IIS就崩溃. 解决办法就是恢复applicationHost.config 先检查C:\Windows\Syste

SpringMVC项目中中文字符乱码问题及解决办法总结(非专业最优解决办法) -- ajax传值乱码; request.getParameter()乱码;

情况一: ajax中传值时是乱码(后台可以获取到中文字符,但用@ResponseBody返回时前台为乱码) 情况二: Controller 中 request.getParameter()获取到的是乱码 @RequestMapping(params = "method=submit") public String submit(HttpServletRequest request, ModelMap modelMap) throws Exception{ String uname =

js实现从字符串中查找出现次数最多的字符的两种解决办法

方法一:正则表达式匹配 1 var str = "adadfdfseffserfefsefseeffffftsdg"; 2 var maxLength = 0; var result = ""; 3 while (str != '') { 4 oldStr = str; 5 getStr = str.charAt(0); 6 str = str.replace(new RegExp(getStr, "g"), ""); 7 i

【掌柜悠哉】Win8,Win10操作系统,打开反击工具崩溃的解决办法

2015年12月30日,微软对win8,win10进行了强制更新,其中有个补丁对ie浏览器有冲突,而反击工具又用到了ie浏览器,所以,就造成了,打开反击工具就崩溃的问题. 下面是解决办法: 第一步:找到[控制面板]并进入,如下图: 第二步:如下图: 第三步:如下图: 第四步:如下图: 注意,需要卸载的更新是:KB3132372  ,不要卸载错了哦.卸载后,再打开反击工具,就可以正常使用了.赶快试试吧. 这个补丁对各种软件影响都很大,这个是新闻链接:http://www.pcpop.com/doc

adobe media encoder cc 2015在win10中打开崩溃的解决办法(该方法同样适用于adobe其他产品)

今天就给大家讲讲adobe media encoder cc 2015启动的时候崩溃的问题,先来看看现象.就是这样了,然后我在网上找了很多办法,有的方法已经过时了,也或者因为现在新版本的adobe media encoder cc 2015已经不支持网上的那些方法了.下面就来说说我找到的几种方法,和我自己解决了问题的方法分享给大家.先来看看我youtube的三种方法吧.1.这种方法虽然他录制的是premiere,不过对于adobe media encoder cc 2015还是适用的,我就是参考

Selenium学习(三)Selenium总是崩溃的解决办法

在使用selenium打开浏览器总是崩溃,最近查资料获得可行的解决办法: 1 import sys 2 from selenium import webdriver 3 4 p = __import__('selenium.webdriver.firefox.webdriver',fromlist=('WebDriver')) ##### 5 url = 'https://www.zhihu.com/#signin' 6 driver = p.WebDriver() ##### 7 driver

关于“ORA-01483: DATE 或 NUMBER 绑定变量的长度无效”的解决办法(C#版)

昨天在给一个在线系统写一个新功能.写完放上去之后,发现原来的数据库访问层存在一个小bugger,决定将这个dll更新到最新使用版本,由于新版本dll使用的不是再是Oracle.DataAccess.dll,而是Oracle.ManagedDataAccess.dll了,所以也就将这个dll也一并更新了.更新上去发现一切正常.所以就没再去管了. 结果到了下午,问题来了.很多用户反应保存某业务的数据有问题.一保存就报 "ORA-01483: DATE 或 NUMBER 绑定变量的长度无效"