iOS解决键盘出现后TableView高度变化 和 View位置变化

一、键盘出现TableView的高 动态变化
有时候,当我们的键盘弹起时候挡住了部分TableView的视图,需要让他的高度发生变化,变的可以滑动到最低部。
这时候可以通过监听键盘的事件来做出相应的处理。

// 监听键盘改变
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];

我们这里监听的是** UIKeyboardWillChangeFrameNotification**,因为这样就可以在一个监听事件里处理所有事,不然写俩个是很难让强迫症接受的事情。

#pragma mark 监听键盘事件
- (void)keyboardWillChangeFrame:(NSNotification *)notification{

    NSDictionary *info = [notification userInfo];
    CGFloat duration = [[info objectForKey:UIKeyboardAnimationDurationUserInfoKey] floatValue];
    CGRect beginKeyboardRect = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue];
    CGRect endKeyboardRect = [[info objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];
    CGFloat yOffset = endKeyboardRect.origin.y - beginKeyboardRect.origin.y;
   
   [UIView animateWithDuration:duration animations:^{
        
        _tableViewMM.height += yOffset;
    }];
}

二、键盘出现ToolBarView动态变化
同样是上面的通知方法,在监听事件里处理transform

#pragma mark 监听键盘事件
- (void)keyboardWillChangeFrame:(NSNotification *)notification{

    CGFloat keyboardY = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].origin.y;
    CGFloat ty = keyboardY - SCREEN_HEIGHT;
    /**
     *  像这种移动后又回到原始位置的建议使用transform,因为transform可以直接清零回到原来的位置
     */
    [UIView animateWithDuration:duration animations:^{
        
        self.toolBarView.transform = CGAffineTransformMakeTranslation(0, ty);
    }];
}

在最后将监听注销掉

// 移除监听
- (void)dealloc{
    [[NSNotificationCenter defaultCenter] removeObserver:self];
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,269评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 174,041评论 25 709
  • 冉冉 文 午饭过后,两个小时的火车去往呼和浩特,再飞乌鲁木齐,不想一切美好的开始竟是一场漫长的等待。 机场里,时间...
    冉冉ranran阅读 257评论 0 0
  • Camera顾名思义,就是照相机、摄像机的意思。在Android中使用这个类可以做拍照和录像的功能。但是在Andr...
    _SOLID阅读 6,767评论 3 44
  • 颈椎病又称颈椎综合征,是颈椎骨关节炎,增生性颈椎炎、颈神经根综合征、颈椎间盘脱出症的总称,是一种以退行性病理改变为...
    听秋月说阅读 177评论 0 0