• 2016-03-15 uitextview placehold


    1:

        _descrViewab = [[UITextView alloc]initWithFrame:CGRectMake(15, CGRectGetMaxY(contentlab.frame)+20, SCREEN_WIDTH-30, 150)];

        _descrViewab.delegate = self;

        //    _descrView.layer.borderColor = (__bridge CGColorRef)([UIColor blackColor]);

        //    _descrViewa.layer.borderWidth = 1;

        _descrViewab.layer.cornerRadius = 5;

        //返回键的类型

        _descrViewab.returnKeyType = UIReturnKeyDefault;

        //    _descrViewa.contentSize = CGSizeMake(SCREEN_WIDTH-60, 150);

        //键盘类型

        

        //获得焦点

        //    [_descrViewa becomeFirstResponder];

        _descrViewab.keyboardType = UIKeyboardTypeDefault;

        [self.view addSubview:_descrViewab];

        

        _placeholderLaba = [[UILabel alloc]initWithFrame:CGRectMake(5, 5, CGRectGetWidth(_descrViewab.frame)-5, 100)];

        _placeholderLaba.backgroundColor = [UIColor clearColor];

        _placeholderLaba.textColor = [UIColor grayColor];

        

        

        _placeholderLaba.text = @"限二百字文字描述";

        

        _placeholderLaba.numberOfLines=0;

        [_placeholderLaba sizeToFit];

        _placeholderLaba.font = _descrViewab.font;

        [_descrViewab addSubview:_placeholderLaba];

     2:代理

    - (void)textViewDidBeginEditing:(UITextView *)textView

    {

        _placeholderLaba.text = @"";

    }

    //结束编辑

    - (void)textViewDidEndEditing:(UITextView *)textView

    {

        

        [_descrViewab resignFirstResponder];

        if (_descrViewab.text.length==0) {

            _placeholderLaba.text =@"限二百字文字描述";

            

        }

        else{

            _placeholderLaba.text = @"";

        }

    }

    ////控制输入文字的长度和内容,可通调用以下代理方法实现

    - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text

    {

    //    if (range.location>=200)

    //    {

    //        //控制输入文本的长度

    //        UIAlertView *alve = [[UIAlertView alloc]initWithTitle:@"提示" message:@"输入内容最多200" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

    //        [alve show];

    //        

    //        return  NO;

    //    }

        if ([text isEqualToString:@" "]) {

            //禁止输入换行

            [textView resignFirstResponder];

            return NO;

        }

        else

        {

            return YES;

        }

    }

     3:点击任何地方键盘消失

    :

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event

    {

        [super touchesBegan:touches withEvent:event];

        [self.view endEditing:YES];

        //隐藏键盘

        [_descrViewab resignFirstResponder];

        

        

        //    [self.editingTextField  resignFirstResponder] ;

        

    }

     

     

    4:

    限制字数可以是: 汉字各种等

        [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textViewEditChanged:) name:UITextViewTextDidChangeNotification object:_descrViewab];  viewdidload

     

     

    - (void)dealloc

     

    {

        

        [[NSNotificationCenter defaultCenter] removeObserver:self];

        [[NSNotificationCenter defaultCenter]removeObserver:self

                                                       name:@"UITextViewTextDidChangeNotification"

                                                     object:_descrViewab];

        

    }

     

     

     

    // 监听文本改变

    -(void)textViewEditChanged:(NSNotification *)obj{

        

        UITextView *textView = (UITextView *)obj.object;

        

        

        

        NSString *toBeString = textView.text;

        

        NSString *lang = [[UITextInputMode currentInputMode] primaryLanguage]; // 键盘输入模式

        

        if ([lang isEqualToString:@"zh-Hans"]) { // 简体中文输入,包括简体拼音,健体五笔,简体手写

            

            UITextRange *selectedRange = [textView markedTextRange];

            

            //获取高亮部分

            

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

            

            // 没有高亮选择的字,则对已输入的文字进行字数统计和限制

            

            if (!position) {

                

                if (toBeString.length > MaxNumberOfDescriptionCharss) {

                    

                    textView.text = [toBeString substringToIndex:MaxNumberOfDescriptionCharss];

                    UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过200个字!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

                    [alert show];

                }

                

            }

            

            // 有高亮选择的字符串,则暂不对文字进行统计和限制

            

            else{

                

                

                

            }

            

        }

        

        // 中文输入法以外的直接对其统计限制即可,不考虑其他语种情况

        

        else{

            

            if (toBeString.length > MaxNumberOfDescriptionCharss) {

                

                textView.text = [toBeString substringToIndex:MaxNumberOfDescriptionCharss];

                UIAlertView *alert = [[UIAlertView alloc] initWithTitle:nil message:@"不能超过200个字!" delegate:nil cancelButtonTitle:@"确定" otherButtonTitles:nil, nil];

                [alert show];

                

            }

            

        }

        

    }

     

     

     

     

  • 相关阅读:
    MVC架构设计及应用
    Vue@2.x+element打包常见问题汇总
    Git回退版本
    snowflake雪花算法
    ctf re自用
    .net优秀开源框架分享
    计算方法3 线性方程组求解
    计算方法2 插值与函数逼近
    计算方法5 图的代数性质
    计算方法4 图的随机游走
  • 原文地址:https://www.cnblogs.com/gzz2016/p/5280433.html
Copyright © 2020-2023  润新知