避免键盘遮挡以及隐藏键盘
很多时候在用户输入时弹出键盘都会阻挡到UI的显示,因此我们应该监听键盘弹出的通知以作UI的位置调整。
键盘的通知
UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillHideNotification
UIKeyboardDidHideNotification
UIKeyboardDidChangeFrameNotification
UIKeyboardWillChangeFrameNotification
键盘通知的字典内容分析
1. 监听键盘即将改变Frame
的通知
1 | [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil]; |
2. 通知内容分析
1 | 2016-02-18 14:17:02.843 test[1304:463755] keyboardInfo is { |
动画调整View的Y值
根据通知接收的字典得到弹出后键盘的Y值以及键盘弹出的时间来调整View的Y值以避免被遮挡。
View调整的Y值 = 键盘弹出后的Y值 - 屏幕高度
1 | - (void)keyboardFramWillChange:(NSNotification *)notification { |
点击空白地方隐藏键盘
1 | - (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event { |
定制 ReturnKey
来隐藏键盘或者跳到下一个 textField
1 | // 1. 遵守 `UITextFieldDelegate` 协议 |