美文网首页iOS学习笔记
如何在键盘弹出的时候视图或者输入框上移避免遮挡

如何在键盘弹出的时候视图或者输入框上移避免遮挡

作者: zhouyuhan | 来源:发表于2016-08-11 00:09 被阅读64次

监听键盘的弹出

为了避免键盘遮挡住输入框或者上方的视图

需要监听键盘的弹出

实现原理

首先 需要注册通知中心 当键盘的frame改变的时候 触发通知的方法

// 注册键盘的通知

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];

- (void)keyboardWillChangeFrame:(NSNotification*)note{

// 取出键盘动画的时间

CGFloat duration = [note.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue];

// 取得键盘最后的frame

CGRect keyboardFrame = [note.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue];

// 计算控制器的view需要平移的距离

CGFloat transformY = keyboardFrame.origin.y - self.view.frame.size.height;

// 执行动画

[UIView animateWithDuration:duration animations:^{

self.view.transform = CGAffineTransformMakeTranslation(0, transformY);

}];

}

最后要在销毁控制器的时候删除删除通知

- (void)dealloc {
[[NSNotificationCenter defaultCenter] removeObserver:self];
}

切记 ,通知有注册就有删除, 是一一对应的

完美

以上

相关文章

网友评论

  • MyiOS:这种方法对于一个textField很管用,如果一个控制器里有3个textField,但只想让一个textField出现这种效果,怎么办?
    zhouyuhan:@OnlyiOS 我也是用的IQKeyboardManager, 但是它只能避免键盘遮挡住textField的输入框, 而我是想在避免键盘挡住输入框的同时不影响下方的确定按钮, 在这个基础上还需要避免遮挡住下方确定按钮, 所以才用了这个
    MyiOS:@zhouyuhan 我昨天按照你的试了,效果不错,可是我的3个textfield都这样了...现在我用IQKeyboardManager了
    zhouyuhan:@OnlyiOS 不知道哦~暂时没有想到好的办法.. :smiley:
    知道能告诉我一声么? :stuck_out_tongue_closed_eyes:

本文标题:如何在键盘弹出的时候视图或者输入框上移避免遮挡

本文链接:https://www.haomeiwen.com/subject/ckwjsttx.html