我在这里查看了许多关于滚动和取消隐藏 UITextField 的帖子,并认为相同的代码应该适用于 UITextView,但似乎并非如此。我遇到的第一个问题是我的示例应用程序是仅支持横向的 iPad 应用程序。从通知返回的键盘大小与键盘的高度和宽度相反。
接下来,虽然我可以让滚动视图滚动文本视图,但它并没有显示所有内容,实际上显示的文本视图数量取决于我在文本视图中点击的位置。它更像是滚动到光标所在的位置,这不是我想要的。
这是我正在使用的代码。它取自一个示例,唯一真正的变化是使用 UITextView 而不是 UITextField。如果我唯一要做的就是用文本字段替换文本视图,它就可以正常工作。
- (void)keyboardWasShown:(NSNotification*)aNotification
{
NSDictionary* info = [aNotification userInfo];
CGSize kbSize = [[info objectForKey:UIKeyboardFrameBeginUserInfoKey] CGRectValue].size;
UIEdgeInsets contentInsets = UIEdgeInsetsMake(0.0, 0.0, kbSize.width, 0.0);
_myscrollview.contentInset = contentInsets;
_myscrollview.scrollIndicatorInsets = contentInsets;
CGRect aRect = self.view.frame;
aRect.size.height -= kbSize.width;
DebugLog(@"textview = %@", _textview);
if (!CGRectContainsPoint(aRect, _textview.frame.origin) ) {
CGPoint scrollPoint = CGPointMake(0.0, _textview.frame.origin.y-kbSize.width);
[_myscrollview setContentOffset:scrollPoint animated:YES];
}
}