博客> UITextView和UITextField
UITextView和UITextField
2019-05-19 20:40 评论:2 阅读:2077 pinglan_z
ios

实际使用时,给我的感觉时,UITextField太方便了,UITextView太麻烦了,但是UITextField只能是单行的 文本,在很多情况下,都需要使用UITextView,所以记录一下两者的用法。 UITextField基本没什么,只要申请内存/初始化/设置一下背景颜色字体等,直接就可以用了,最方便的是 有个placeHolder,显示默认的文本,我没有找到UITextView相似的功能,最后只好自己实现了一个不太完美的 相似功能,后述。如有路过的高手有好方法的,希望能赐教。 主要记录一下UITextView的用法。

  1. 需要实现UITextViewDelegate协议,根据需要,实现其中的方法(后述,主要用到了键盘return事件)
  2. 需要设置代理

    UITextView* tv = [UITextView alloc]initWithFrame:CGRectMake(0,0,100,300); tv.delegate = self;

  3. 可以让UITextView具备滚动条:

    tv.scrollEnabled=YES

  4. 我 使用UITextView,主要想实现下面几个需求: 1)点击键盘的return时,隐藏键盘 2)当textView没有内容时,用默认文本填充(类似placeHolder),当开始输入时,默认文本消失,等待输入内容。 3)当输入完毕后,将文本内容保存在成员变量中(获得文本内容) 实现1)的需求,用到如下代理函数

    -(BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text
    {
        //如果时return键
        if ([text isEqualToString:@"\n"])
        {      
                 //如果内容仍然为空,则用默认内容填充
                if (textView.text.length == 0)
                {
                    textView.text =@“默认输入内容”;
                } 
            //使textView失去焦点,从而隐藏键盘 
            [textView resignFirstResponder];
    
        }    
        return YES;
    }

    实现2)的需求,用到下面代理函数

    -(BOOL)textViewShouldBeginEditing:(UITextView *)textView
    {
                 //当文本内容是默认时,设置为空,等待输入
                if ([textView.text isEqualToString:@“默认输入内容”]) {
                    textView.text = @"";
                }        
                return YES;
    }

    实现3)的需求,用到下面代理函数

    -(void)textViewDidEndEditing:(UITextView *)textView
    {
        itemData.strMissionDetail = textView.text;
    }

    temData.strMissionDetail 是自定义的变量

  5. 如果想使自己的textView不可编辑(比如点击保存之后),可以在textViewShouldBeginEditing代理函数 中,直接令其失去焦点,这样,textview永远获得不了焦点,相当于失效。

对于UITextField来说,如果要实现return隐藏键盘,则直接实现UITextFiledDelegate协议中的如下函数即可:

    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        [textField resignFirstResponder];
        return YES;
    }
收藏
1
sina weixin mail 回到顶部