注意下文标红字段:

#pragma mark- 输入改变时

- (void) textFieldDidChanged:(UITextField *) TextField{

//搜索关键字一旦改变,将重新搜索,防止下拉的时候数据重复

_currentPage = 1;

bool isChinese;//判断当前输入法是否是中文

if ([[[UITextInputMode currentInputMode] primaryLanguage] isEqualToString: @"en-US"]) {

isChinese = false;

}

else

{

isChinese = true;

}

//去掉搜索中所有空格

NSString *seachtext = [[_seachtextField text] stringByReplacingOccurrencesOfString:@" " withString:@""];

NSLog(@"%@",seachtext);

_seachtextField.text=seachtext;

if (isChinese) { //中文输入法下

UITextRange *selectedRange = [TextField markedTextRange];

//获取高亮部分

UITextPosition *position = [TextField positionFromPosition:selectedRange.start offset:0];

// 没有高亮选择的字,则对已输入的文字进行请求

if (!position) {

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

if (_seachtextField.text.length>50) {

[ApplicationDelegate showMsg:@"输入搜索地址过长!" inView:ApplicationDelegate.window];

_seachtextField.text=[_seachtextField.text substringWithRange:NSMakeRange(0, 49)];

return ;

}

DLog(@"输入的英文转化为汉字的状态");

//                [self headerRereshing];

});

}else

{

DLog(@"复制粘贴很多文字,继续输入会导致崩溃:联想输入时输入的英文还没有转化为汉字的状态会导致崩溃");

//对超出限制长度情况进行判断,并直接退出

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

if (_seachtextField.text.length>50) {

_seachtextField.text=[_seachtextField.text substringWithRange:NSMakeRange(0, 49)];

return ;

}

return;

});

}

}else{

dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

if (_seachtextField.text.length>50) {

[ApplicationDelegate showMsg:@"输入搜索地址过长!" inView:ApplicationDelegate.window];

_seachtextField.text=[_seachtextField.text substringWithRange:NSMakeRange(0, 49)];

return ;

}

DLog(@"输入英文的状态");

//            [self headerRereshing];

});

}

}

第二篇:_UICascadingTextStorage attributesAtIndex:effectiveRange:]: Range or index out of bounds的更多相关文章

  1. [_UICascadingTextStorage attributesAtIndex:effectiveRange:]: Range or index out of bounds

    之前写过一篇<如何更好地限制一个UITextField的输入长度>,在文章最后得到的结论是可以直接使用 UIKIT_EXTERN NSString *const UITextFieldTe ...

  2. 小白两篇博客熟练操作MySQL 之 第二篇

    小白两篇博客熟练操作MySQL  之   第二篇 一. 视图 视图是一个虚拟表,其本质是根据SQL语句获取动态的数据集,并为其命名,用户使用时只需使用名称即可获取结果集, 并可以将其当做表来使用. s ...

  3. 第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:“变”=>变化,“量”=> ...

  4. 【OpenGL】第二篇 Hello OpenGL

    ---------------------------------------------------------------------------------------------------- ...

  5. 深入理解javascript函数系列第二篇——函数参数

    × 目录 [1]arguments [2]内部属性 [3]函数重载[4]参数传递 前面的话 javascript函数的参数与大多数其他语言的函数的参数有所不同.函数不介意传递进来多少个参数,也不在乎传 ...

  6. Swift开发第二篇——extension及fatalError

    本篇分两部分: 一.extension在 Swift 中的使用 二.Swift 中的 fatalError 一.extension在 Swift 中的使用 在 swift 中我们可以通过 extens ...

  7. 第二篇 :微信公众平台开发实战Java版之开启开发者模式,接入微信公众平台开发

    第一部分:微信公众号对接的基本介绍 一.填写服务器配置信息的介绍 登录微信公众平台官网后,进入到公众平台后台管理页面. 选择 公众号基本设置->基本配置 ,点击“修改配置”按钮,填写服务器地址( ...

  8. python-集合(第二篇(七):集合)

    第二篇(七):集合   python 集合 集合标准操作 摘要: 说明: ·类似于数学中学的集合,Python中的集合可以实现去重的功能,通过set()函数来实现: ·sets支持x in set, ...

  9. python之enumerate枚举 第二篇(六):enumerate枚举

    [Python之旅]第二篇(六):enumerate枚举   python enumerate枚举 摘要: 1.普通情况下打印列表中索引号及其对应元素     使用下面的循环: 1 2 3 4 5 6 ...

随机推荐

  1. git还原文件

    http://jingyan.baidu.com/album/e4511cf33479812b855eaf67.html

  2. l洛谷 P3926 SAC E#1 - 一道不可做题 Jelly

    P3926 SAC E#1 - 一道不可做题 Jelly 题目背景 SOL君(炉石主播)和SOL菌(完美信息教室讲师)是好朋友. 题目描述 SOL君很喜欢吃蒟蒻果冻.而SOL菌也很喜欢蒟蒻果冻. 有一 ...

  3. oracle学习之路(二)------数组类型/记录类型的使用

    Oracle记录类型介绍 RECORD:用户自己定义数据类型,由单行多列的标量构成的复合数据类型.它将一个或多个标量封装成一个对象进行操作记录不能够总体拿来比較也不能够总体推断为空.能够总体拿来赋值. ...

  4. HTML基础第五讲---控制表格及其表项的对齐方式

    转自:https://i.cnblogs.com/posts?categoryid=1121494 缺省情况下,表格在浏览器屏幕上左对齐,你可以使用<TABLE>的ALIGN属性来指定表格 ...

  5. 最小二乘法,python3实现

    https://www.cnblogs.com/BlogOfMr-Leo/p/8627311.html                      [用的是库函数] https://blog.csdn. ...

  6. TC Hangs when using quick search extended on win10 (1703)

    https://ghisler.ch/board/viewtopic.php?t=47682 I recently updated windows 10 to the latest released ...

  7. 【习题 6-11 UVA - 10410】Tree Reconstruction

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 可以先确定当前这棵子树的dfs序的范围. 然后第一个元素肯定是这棵子树的根节点. 那么只要在这棵子树的范围里面枚举节点. 看看有没有 ...

  8. 【 Codeforces Round #430 (Div. 2) A 】 Kirill And The Game

    [链接]点击打开链接 [题意] 水题 [题解] 枚举b从x..y看看k*i是不是在l..r之间就好. [错的次数] 0 [反思] 在这了写反思 [代码] #include <cstdio> ...

  9. FarPoint.Win.Spread 常规操作

    FarPoint.Win.Spread.FpSpread fSpread = new FarPoint.Win.Spread.FpSpread();             //设置 行数.列数    ...

  10. 防止登录页面出如今frame中

    在使用frame页面嵌套开发的时候,遇到重新启动了server的时候会出现登录页面在frame页面中出现, 所以须要在登录页面里面用js推断下当前的地址信息,然后跳转到登录的单独页面中. js代码例如 ...