鍵盤顯示隱藏時view自動調整位置

原文鏈接:點擊打開鏈接

-

添加監聽

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(changeContentViewPosition:)
                                             name:UIKeyboardWillShowNotification
                                           object:nil];

[[NSNotificationCenter defaultCenter] addObserver:self
                                         selector:@selector(changeContentViewPosition:)
                                             name:UIKeyboardWillHideNotification
                                           object:nil];

移除監聽

[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillShowNotification object:nil];
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIKeyboardWillHideNotification object:nil];

事件處理函數

- (void) changeContentViewPosition:(NSNotification *)notification{

    NSDictionary *userInfo = [notification userInfo];
    NSValue *value = [userInfo objectForKey:UIKeyboardFrameEndUserInfoKey];
    CGFloat keyBoardEndY = value.CGRectValue.origin.y;

    NSNumber *duration = [userInfo objectForKey:UIKeyboardAnimationDurationUserInfoKey];
    NSNumber *curve = [userInfo objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    [UIView animateWithDuration:duration.doubleValue animations:^{
        [UIView setAnimationBeginsFromCurrentState:YES];
        [UIView setAnimationCurve:[curve intValue]];
        self.view.center = CGPointMake(self.view.center.x, keyBoardEndY - STATUS_BAR_HEIGHT - self.view.bounds.size.height/2.0);
    }];
}

 [center addObserver:self selector:@selector(addressTextBeginEditing) name:UITextFieldTextDidBeginEditingNotification object:self.addressText];

    [center addObserver:self selector:@selector(declareTextViewBeginEditing) name:UITextViewTextDidBeginEditingNotification object:self.declareTextView];




#pragma mark -view自動調整位置

- (void)changeContentViewPosition:(NSNotification *)notification{

    NSDictionary *dict = [notification userInfo];

    NSValue *value = [dict objectForKey:UIKeyboardFrameEndUserInfoKey];

    CGFloat keyboardEndY = value.CGRectValue.origin.y;

    NSNumber *duration = [dict objectForKey:UIKeyboardAnimationDurationUserInfoKey];

    NSNumber *curve = [dict objectForKey:UIKeyboardAnimationCurveUserInfoKey];

    [UIView animateWithDuration:duration.doubleValue animations:^{

        [UIView  setAnimationBeginsFromCurrentState:YES];

        [UIView setAnimationCurve:curve.intValue];

        self.view.center = CGPointMake(self.view.center.x, keyboardEndY - self.view.bounds.size.height / 2.0);

    }];

}


這樣就能實現了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章