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

2016-11-08  本文已影响180人  不胜

一、键盘出现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];
}
上一篇下一篇

猜你喜欢

热点阅读