最近忙于写项目,从而也遇到一些小问题,记录下来,方便大家使用.
UITableView
我们经常使用UITableView,并且也会在上面添加UITextField,但是很多时候发现点击UITextField的时候键盘会挡住输入框,相关解决方案在github上有一些第三方,当然目前最好的就是IQKeyboardManager https://github.com/hackiftekhar/IQKeyboardManager
了,不过在使用当中 会发现 导航条也会向上移动,因为懒得改导航条所以又用另外一种方式解决问题,废话不多说直接上代码,代码简洁,不过只能在iOS6以上的版本上使用.
- (void)viewDidLoad {
[super viewDidLoad];
//添加键盘监听
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];
}
#pragma mark 键盘出现
-(void)keyboardWillShow:(NSNotification *)note
{
CGRect keyBoardRect=[note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];
_tableView.contentInset = UIEdgeInsetsMake(0, 0, keyBoardRect.size.height, 0);
}
#pragma mark 键盘消失
-(void)keyboardWillHide:(NSNotification *)note
{
//加个动画,显得不那么生硬
[UIView animateWithDuration:0.25 animations:^{
_tableView.contentInset = UIEdgeInsetsZero;
}];
}
//移除监听事件 **如果你加入了定时器之类的控件,在控制器销毁的时候定时器没有结束,那么不会掉用此方法,解决方案是 在 - (void)viewWillDisappear:(BOOL)animated内将其移除,这样就不会出现没有移除通知在此进入后崩溃的现象了**
-(void)dealloc
{
[[NSNotificationCenter defaultCenter] removeObserver:self];
}