iOS-UITextView 的收起键盘及动态大小
来源:互联网 发布:淘宝网韩版卫衣 编辑:程序博客网 时间:2024/04/30 14:46
UITextView跟UITextField很相似,两者都是用于用户输入文本内容的控件,UITextFiled收起键盘方式及介绍
UITextView的父类是UIScrollView,它是能滑动的,可以显示和编辑大量文本。其实有些应用使用到textView来写文章时,并不会加入收起键盘这个操作,如网易的LOFTER,它的UITextview其实就是键盘以上这么大,不会动态改变。
UITextView的大小应该随着键盘的show与hide来改变,这样做用户体验才会更好!
UITextView的收起键盘方式
1.按return健收起键盘
_textView.delegate = self;//设置代理//按回车收起键盘- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text { if ([text isEqual:@"\n"]) {//判断按的是不是return [_textView resignFirstResponder]; return NO; } return YES;}
这样只要键盘上的return被点击就会收起键盘了。但是这个方法并不是很好,写文章想换行时,把键盘给收起了。因此不推荐这个方法。
2.增加ToolBar及其上面的UIBarButtonItem收起键盘
收起键盘的本质就是-resignFirstResponder,因此只要有按钮绑定这个方法,放哪都可以收起键盘。
- (void)addToolBar { UIToolbar *toolbar = [[UIToolbar alloc] initWithFrame:CGRectMake(0, 0, 375, 30)];//创建toolbar UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemDone target:self action:@selector(hiddenKeyboard)];//创建系统item按钮,并绑定一个方法 [toolbar setItems:@[item]];//将item添加到toolbar上 [_textView setInputAccessoryView:toolbar];//将toolbar添加到InputAccessoryView上}- (void)hiddenKeyboard { [_textView resignFirstResponder];}
点击红色圈圈里面的item就可以收起键盘啦,这个inputAccessoryView,它使随着键盘的出现而出现,消失而消失,非常方便,还有很多可以扩展的地方,这里不一一介绍。
3.通过滑动textView收起键盘
UITextView的父类是UIScrollView,scrollView的代理方法他当然也是可以用的。
但是UITextView在文字高度小于textview高度时,是不能滑动的,因此代理方法也不会调用,只有textView的大小不能完全显示文字时,才可以滑动。
- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {//滑动开始时调用 [_textView resignFirstResponder];}
UITextView 的动态大小
上一张图中,键盘把文字遮住了,看不到自己输入了什么,就无法继续输入文字了。让键盘弹出时,textview随着键盘“上升”,这是一个不错的解决方法。
textview“上升”的本质就是frame中的高度改变,首先要确定键盘上升了多少才能确定textview的高度要减少多少。(注意:不同机型的键盘高度是不同的,不同的键盘类型的高度也是不同的,如英文和中简,emoji都有差别)
先用toolBar上的item演示textview的动态高度
本文采用的机型是iPhone6,屏幕大小的动态获取比较简单,为了节省时间(偷懒~~)全部采用了(375,667)。
在ViewDidLoad中添加通知
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(showKeyboard:) name:UIKeyboardDidShowNotification object:nil];//添加键盘已经弹出的通知 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hideKeyboard:) name:UIKeyboardWillHideNotification object:nil];//添加键盘即将收回的通知
通知对应的方法
//键盘弹出时调用的方法- (void)showKeyboard:(NSNotification *)notification { NSDictionary *info = [notification userInfo]; NSValue *value = [info valueForKey:UIKeyboardFrameBeginUserInfoKey]; CGSize size = [value CGRectValue].size;//获取键盘高度 _textView.frame = CGRectMake(0, 20, 375, 667 - 20 - size.height);//改变textview的frame}//键盘即将收回时调用的方法- (void)hideKeyboard:(NSNotification *)notification { [UIView animateKeyframesWithDuration:.3 delay:0 options:UIViewKeyframeAnimationOptionLayoutSubviews animations:^{ _textView.frame = CGRectMake(0, 20, 375, 667 - 20); } completion:nil];//将textView的frame复原,加一个动画效果,否则好难看}
总结一下,键盘收起方式:
第一种。按return收起,写文章经常会用到回车,因此不实用,基本不考虑。
第二种。添加toolbar,比较方便,可拓展性强,推荐。
第三种。滑动收起,缺点是文字少的情况下无法收起,当然文字少的情况下,键盘不可能会遮住文字,也没必要收起键盘。优点是操作更加人性化。
- iOS-UITextView 的收起键盘及动态大小
- iOS 键盘的收起
- UITextView收起键盘
- iOS开发 - 键盘的收起
- 收起虚拟键盘的各种方法 -- IOS
- IOS 收起虚拟键盘的各种方法
- ios键盘收起的常见方法
- iOS 键盘收起异常的解决办法
- iOS 直接收起键盘的方法
- UITextField的键盘收起及外部点击
- ios 收起键盘
- iOS 键盘收起~
- iOS 收起键盘
- ios 收起键盘
- iOS收起键盘
- iOS收起键盘
- ios 键盘收起
- iOS修行---收起键盘
- sourceTree 切换Git登录用户
- 工作四年
- AsyncTask的缺陷
- sobel gaussin laplace canny等opencv测试
- java短信生成6位数的校验码
- iOS-UITextView 的收起键盘及动态大小
- nodejs npm常用命令
- ueditor图片上传配置
- swift基础知识
- 练声
- Masonry介绍与使用实践(快速上手Autolayout)
- C语言之基本算法26—佩尔方程求解
- HIstograms of Oriented Gradients
- iOS 开发技巧 简单易用