通过监听键盘,实现对UITextView的内容移动

视图出现时,增加观察

- (void)viewWillAppear:(BOOL)animated

{

    // 增加对键盘的监听

    [[NSNotificationCenter defaultCenter] addObserver:self

     

                                             selector:@selector(keyboardWasShown:)

     

                                                 name:UIKeyboardWillShowNotification object:nil];

    [[NSNotificationCenter defaultCenter] addObserver:self

     

                                             selector:@selector(keyboardWasHidden:)

     

                                                 name:UIKeyboardWillHideNotification object:nil];

}

#pragma mark -- 与键盘监听相关的方法

- (void)keyboardWasShown:(NSNotification *)notification

{

    // 获取键盘高度

    CGRect keyBoardFrame  = [[[notification userInfo] objectForKey:UIKeyboardFrameEndUserInfoKey] CGRectValue];

    CGFloat keyBoardH      = keyBoardFrame.size.height;

    CGFloat y                = keyBoardH - 120 - self.bottomLayout.constant;

 // 通过改变contentInset的heigh来使textView的字可以跟着移动

    self.contentTextView.contentInset   = UIEdgeInsetsMake(0, 0, y, 0);

}

// 键盘消失时 重新改回原来的contentInsert

- (void)keyboardWasHidden:(NSNotification *)notification

{

    self.contentTextView.contentInset   = UIEdgeInsetsMake(0, 0, 0, 0);

}

 

视图消失时,移除观察

- (void)viewDidDisappear:(BOOL)animated

{

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

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

    

}

原文地址:https://www.cnblogs.com/destiLaugh/p/5821081.html