IOS解决键盘挡住UITextView的方法
2014-02-19 14:48
531 查看
想要解决这个问题,首先了解一些通知(notifications)
1.UIKeyboardWillShowNotification
当键盘准备显示的时候会发出这个通知,只要是可编辑的原件都有效
2.UIKeyboardDidShowNotification键盘完全显示后发出这个通知
3.UIKeyboardWillHideNotification键盘消失准备离开我们的视野的时候发出这个通知
4.UIKeyboardDidHideNotification键盘完全消失的时候发出这个通知
所以我们的办法就是需要知道键盘什么时候出现,在这个时刻我们再次定义我们的可编辑控件的大小,比如UITextView,UITextField等;
(PS:键盘通知里面包含有一个userInfo这个属性,该属性包含了键盘的尺寸,其中有一个UIKeyboardFrameEndUserInfoKey作为字典中的一个键值,指向的就是键盘完全显示的时候,键盘大小、尺寸)
NSValue *keyboardRectAsObject = [[paramNotification userInfo]
objectForKey:UIKeyboardFrameEndUserInfoKey];
通过上述代码获得显示完全的键盘属性
首先系统发出通知,我们做的就是监听通知,然后处理监听方法
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardDidShowNotification object:Nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hanleKeyboardWillHide:) name:UIKeyboardDidHideNotification object:nil];
}
其中@selector方法如下
-(void)handleKeyboardDidShow:(NSNotification*)paramNotification
{
NSValue *keyboardRectAsObject = [[paramNotification userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect rect;
[keyboardRectAsObject getValue:&rect];
self.myTextView.contentInset = UIEdgeInsetsMake(0, 0, rect.size.height + 10, 0);
}
-(void)hanleKeyboardWillHide:(NSNotification*)paramNotification
{
self.myTextView.contentInset = UIEdgeInsetsZero;
}
好了,以上就是核心代码,祝大家编码愉快~~
(PS:原创文章,转载请标明出处)
1.UIKeyboardWillShowNotification
当键盘准备显示的时候会发出这个通知,只要是可编辑的原件都有效
2.UIKeyboardDidShowNotification键盘完全显示后发出这个通知
3.UIKeyboardWillHideNotification键盘消失准备离开我们的视野的时候发出这个通知
4.UIKeyboardDidHideNotification键盘完全消失的时候发出这个通知
所以我们的办法就是需要知道键盘什么时候出现,在这个时刻我们再次定义我们的可编辑控件的大小,比如UITextView,UITextField等;
(PS:键盘通知里面包含有一个userInfo这个属性,该属性包含了键盘的尺寸,其中有一个UIKeyboardFrameEndUserInfoKey作为字典中的一个键值,指向的就是键盘完全显示的时候,键盘大小、尺寸)
NSValue *keyboardRectAsObject = [[paramNotification userInfo]
objectForKey:UIKeyboardFrameEndUserInfoKey];
通过上述代码获得显示完全的键盘属性
首先系统发出通知,我们做的就是监听通知,然后处理监听方法
-(void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(handleKeyboardDidShow:) name:UIKeyboardDidShowNotification object:Nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(hanleKeyboardWillHide:) name:UIKeyboardDidHideNotification object:nil];
}
其中@selector方法如下
-(void)handleKeyboardDidShow:(NSNotification*)paramNotification
{
NSValue *keyboardRectAsObject = [[paramNotification userInfo]objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect rect;
[keyboardRectAsObject getValue:&rect];
self.myTextView.contentInset = UIEdgeInsetsMake(0, 0, rect.size.height + 10, 0);
}
-(void)hanleKeyboardWillHide:(NSNotification*)paramNotification
{
self.myTextView.contentInset = UIEdgeInsetsZero;
}
好了,以上就是核心代码,祝大家编码愉快~~
(PS:原创文章,转载请标明出处)
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- js判断客户端是iOS还是Android等移动终端的方法
- IOS开发环境windows化攻略
- 探讨Android与iOS,我们将何去何从?
- IOS 身份证校验详细介绍及示例代码
- iOS NSDate中关于夏令时的坑
- iOS内存错误EXC_BAD_ACCESS的解决方法
- 从 Auto Layout 的布局算法谈性能
- 浅谈 MVC、MVP 和 MVVM 架构模式
- 深入解析 ObjC 中方法的结构
- 你真的了解 load 方法么?
- 从源代码看 ObjC 中消息的发送
- vm安装mac os x 10.7 lion
- objective-c(一)
- objective-c(三)
- objective-c(四)-基本数据类型以及循环和选择结构
- objective-c(六)文件分离,合成存取方法,方法多参数,局部变量,self使用(未完成)