您的位置:首页 > 移动开发 > IOS开发

iOS中获取键盘高度手动管理键盘

2016-09-28 16:27 435 查看
APP中有时候会出现键盘遮挡输入框的问题,这个时候就需要对键盘进行管理

可选择如下两种方式进行管理:

1.手动管理键盘
代码如下:


- (void)viewDidLoad {
[super viewDidLoad];
//键盘处理
[self dealWithKeyboard];
}

- (void)dealWithKeyboard{

//增加监听,当键盘出现时响应
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillShow:)
name:UIKeyboardWillShowNotification
object:nil];

//增加监听,当键盘隐藏时响应
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(keyboardWillHide:)
name:UIKeyboardWillHideNotification
object:nil];
}
//当键盘出现时调用
- (void)keyboardWillShow:(NSNotification *)aNotification
{
NSLog(@"键盘升起");
//获取键盘的高度
NSDictionary *userInfo = [aNotification userInfo];
NSValue *aValue = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
CGRect keyboardRect = [aValue CGRectValue];
//height就是获取的键盘高度
int height = keyboardRect.size.height;
//这里我将tableview的frame的高度设置为导航栏与键盘之间的空隙,这样当用户点击输入框时会获取焦点
self.tableView.frame = CGRectMake(0, 0, kScreenW, kScreenH-64-50-height);
}

//当键盘隐藏时调用
- (void)keyboardWillHide:(NSNotification *)aNotification{

NSLog(@"键盘隐藏");
//退出键盘时将tableview的高度恢复正常
self.tableView.frame = CGRectMake(0, 0, kScreenW, kScreenH-64-50);
}


手动管理也可以通过UITextFieldDelegate,或者UITextViewDelegate等中的方法来管理,但是有很多要注意的地方,也比较麻烦

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField;
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField;
- (BOOL)textFieldShouldReturn:(UITextField *)textField ;


等等一系列方法都要设置frame,如果有TextView那协议方法又要增加几个,比较麻烦

2.使用第三方来管理键盘

常用的比如IQKeyboardManager,YYKeyboardManager等,导入就能使用,比较方便,但是第三方有时候也会遇到一些问题,
IQKeyboardManager里如果输入框的底层视图不能滑动的话,键盘弹起会将导航栏一并升起,这些问题都要注意。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: