• 第二篇:_UICascadingTextStorage attributesAtIndex:effectiveRange:]: Range or index out of bounds


    注意下文标红字段:

    #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];

                

            });

            

        }

        

        

    }

  • 相关阅读:
    【Linux】项目部署
    【架构师之路】【MQ】消息队列
    【数据库】【Python】mysql
    【算法】【Python】找出字符串中重复出现的字符 并求出重复次数 且根据重复次数从大到小排列
    【Python】排序 按照list中的字典的某key排序
    Kettle Post请求webservice
    python+pytest+allure接口自动化测试框架
    Python+unittest+requests+htmlTestRunner+excel完整的接口自动化框架
    python实现栈的基本操作
    展示博客园顶部的随笔、文章、评论、阅读量统计数据
  • 原文地址:https://www.cnblogs.com/niexiaobo/p/5045066.html
Copyright © 2020-2023  润新知