UITextView相关方法的调用时刻

过程1

点击UITextView时啥都不输入,会出现一闪一闪的光标时,实际上依次执行了两个方法:先执行textViewShouldBeginEditing:方法,紧接着会执行textViewDidBeginEditing:方法,整个过程非常连贯.
这两个方法仅仅在第一次点击UITextView的时候调用,以后不会再调用,除非这个UITextView被取消编辑状态(标志:光标消失)

//  1.将要开始编辑时调用
- (BOOL)textViewShouldBeginEditing:(UITextView *)textView{

    #warning 可以在此方法中获取剪切板中的内容等等。

  // YES:可以编辑UITextView(标志:光标一闪一闪);  
  //  NO:不可以编辑UITextView(无光标闪动)
  return YES;
}

//  2.已经开始编辑时调用(注意:只有1返回YES才会执行2)
- (void)textViewDidBeginEditing:(UITextView *)textView{

  #warning 可以在此方法中让页面整体移动,为的是不让弹出的键盘挡住页面中的内容。
}

过程2

点击UITextView时,输入了字符会发现字符显示到UITextView上,实际上依次执行了两个方法:先执行textView:shouldChangeTextInRange:replacementText:方法,紧接着会执行 textViewDidChange:方法,,整个过程非常连贯.
只要我们每次向UITextView中输入字符,这两个方法就会被调用,输入几个字符就调用了多少次


//  3.UITextView中输入拼音或者其他字符就会调用。注:输入汉字是不会调用的
- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text{

#warning 可以在这个方法中实现按下回车键就让键盘消失
if ([text isEqualToString:@"\n"]) {
        // 让UITextView成为第一响应者,这样键盘就会消失.
        [textView resignFirstResponder];
        return NO;
    }

// YES:键盘上输入的字符会显示到UITextView上;  
//  NO:键盘上输入的字符不会显示到UITextView上;
return YES;
}


//  4.UITextView中的内容改变就调用.例如:在UITextView中输入了5个字,那么这个代理方法就调用5次.所以说是很频繁的调用
- (void)textViewDidChange:(UITextView *)textView{
  
  #warning 可以在此方法中限制UITextView中的字符的个数
}

过程3

UITextView上的光标消失时就会调用.让UITextView上的光标消失有很多种做法.这里列举两个。
方式1:让当前界面上的所有控件取消编辑状态[self.view endEditing:YES];
方法2:点击键盘上的return键,"Send"键,"发送"键,"Done"键


//  5.将要结束编辑时调用(UITextView上的光标消失时就会调用)
-(BOOL)textViewShouldEndEditing:(UITextView *)textView{

  return YES;
}

总结:从点击UITextView的那一刻(过程1) 到 向UITextView输入字符(过程2) 到 取消UITextView的编辑状态(过程3) 这三个大过程, 对UITextView的常用方法进行了大致的描述。

可以参考这个链接来更加细致的使用UITextView

你可能感兴趣的:(UITextView相关方法的调用时刻)