完美适应iOS中的键盘高度变化
很久以前写了一篇文章,讨论如何《自适应iPhone的不同键盘高度》,今天觉得可以完美跟随:
- #pragma mark - reg & unreg notification
- - (void)regNotification
- {
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillChangeFrame:) name:UIKeyboardWillChangeFrameNotification object:nil];
- }
- - (void)unregNotification
- {
- [[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillChangeFrameNotification object:nil];
- }
- #pragma mark - notification handler
- - (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;
- CGRect inputFieldRect = self.inputTextField.frame;
- CGRect moreBtnRect = self.moreInputTypeBtn.frame;
- inputFieldRect.origin.y += yOffset;
- moreBtnRect.origin.y += yOffset;
- [UIView animateWithDuration:duration animations:^{
- self.inputTextField.frame = inputFieldRect;
- self.moreInputTypeBtn.frame = moreBtnRect;
- }];
- }
通过获取键盘消息的开始状态、结束状态,以及变化周期,可以计算出具体的Y偏移,从而在相同时间里做相同偏移量。