如何完美適應(yīng)iOS中的鍵盤(pán)高度變化

字號(hào):


    #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;
    }];
    }
    通過(guò)獲取鍵盤(pán)消息的開(kāi)始狀態(tài)、結(jié)束狀態(tài),以及變化周期,可以計(jì)算出具體的Y偏移,從而在相同時(shí)間里做相同偏移量。