我在这里看了很多关于滚动和取消隐藏UITextField的帖子,并认为相同的代码应该适用于UITextView,但似乎并非如此。我遇到的第一个问题是我的示例应用程序是一个仅支持横向的iPad应用程序。通知返回的键盘大小使键盘的高度和宽度反转。
接下来,虽然我可以让scrollview滚动textview,但它并没有显示所有内容,实际上显示的textview数量取决于我在textview中点击的位置。它更像是滚动到光标所在的位置,这不是我想要的。
这是我正在使用的代码。它取自一个例子,唯一真正的变化是使用UITextView而不是UITextField。如果我唯一要做的就是用文本字段替换textview,它可以正常工作。
- (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];
}
}
答案 0 :(得分:1)
如果您只想滚动到UITextView的顶部,可以通过
进行操作[textview scrollRectToVisible:CGRectMake(0,0,1,1) animated:YES];
尝试搞乱以下方法。也许将其设置为textView的高度。你能发布这个问题的截图吗?
- (void)textViewDidChangeSelection:(UITextView *)textView
{
[textView setSelectedRange:NSMakeRange(0, 0)];
}
答案 1 :(得分:0)
Apple提供了正确的方法here(请参阅清单4-1)。它适用于UITextField和UITextView。我们不需要编辑范围或其他任何内容。它应该是需要处理的scrollview。标记为“已回答”的标记为'可能有用,但我们最好遵循创作者的方法!