关于UITableView上的键盘弹出遮挡输入框的关问题

最近忙于写项目,从而也遇到一些小问题,记录下来,方便大家使用.

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];
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 也许春天来了。 “也许”的原因,是广东的天气过于飘忽,昨天还是炎热仲夏,转眼间又冷意飕飕。 下班。等车。辞别黄昏。...
    郭栩鹏阅读 4,048评论 2 3
  • 2017,第一天 先来谈谈关于昨晚的跨年,《时间的朋友》陪伴,四个多小时演讲内容的确很烧脑,但是也让自己的认知又一...
    开开Angela阅读 1,566评论 0 0
  • gg7207
    b1f86e5e9ad6阅读 981评论 0 0
  • 1993年武汉市二十九中老三届校友会成立后,举行了多次师生聚会活动。 2006年教师节盛大的师生聚会后...
    克骧阅读 3,996评论 0 0