过程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