萬盛學電腦網

 萬盛學電腦網 >> 網絡編程 >> ios >> 如何完美適應iOS中的鍵盤高度變化

如何完美適應iOS中的鍵盤高度變化

 #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偏移,從而在相同時間裡做相同偏移量。 

copyright © 萬盛學電腦網 all rights reserved