好的,我实现了自己的示例项目来找到答案。你应该替换你的名字。
首先,我将添加观察者来检测键盘何时显示或隐藏:
- (void)addKeyboardObserver
{
// This could be in an init method.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidShow:) name:UIKeyboardDidShowNotification object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardDidHide:) name:UIKeyboardDidHideNotification object:nil];
}
- (void)keyboardDidShow:(NSNotification*)notification
{
NSDictionary* keyboardInfo = [notification userInfo];
NSValue* keyboardFrameBegin = [keyboardInfo valueForKey:UIKeyboardFrameBeginUserInfoKey];
_keyboardFrameBeginRect = [keyboardFrameBegin CGRectValue];
UIScrollView *_scrollView = (UIScrollView*)self.view;
_scrollView.frame = CGRectMake(_scrollView.frame.origin.x,
_scrollView.frame.origin.y,
_scrollView.frame.size.width,
_scrollView.frame.size.height - _keyboardFrameBeginRect.size.height);
}
- (void)keyboardDidHide:(NSNotification*)notification
{
UIScrollView *_scrollView = (UIScrollView*)self.view;
_scrollView.frame = CGRectMake(_scrollView.frame.origin.x,
_scrollView.frame.origin.y,
_scrollView.frame.size.width,
_scrollView.frame.size.height +
_keyboardFrameBeginRect.size.height);
}
然后,将 textViewDidChange: 方法更改为:
- (void)textViewDidChange:(UITextView *)textView
{
UIScrollView *_scrollView = (UIScrollView*)self.view;
_textView.frame = CGRectMake(_textView.frame.origin.x,
_textView.frame.origin.y,
_textView.contentSize.width,
_textView.contentSize.height);
_scrollView.contentSize = _textView.frame.size;
if (_scrollView.frame.size.height < _textView.frame.size.height) {
CGPoint bottomOffset = CGPointMake(0,_textView.frame.size.height-_keyboardFrameBeginRect.size.height);
[_scrollView setContentOffset:bottomOffset animated:NO];
}
}
祝你好运!