scrollRangeToVisible:如何滚动到UITextView的开头

时间:2011-03-11 13:29:58

标签: iphone objective-c cocoa-touch uitextview

一个初学者的头痛:一旦键盘被解除,我正试图滚动到我的UITextView的顶部。我试图提取答案from here,但我担心它没有多大帮助。

我以为我用scrollRectToVisible来做这件事,但没有任何反应。然后我想我应该尝试使用scrollRangeToVisible,但这会使我的应用程序崩溃...我确信我已经做了一些非常令人沮丧和错误的事情。如果有人可以提供帮助,我会很高兴:

- (IBAction)hideKeyboard:(id)sender {

//[textView scrollRectToVisible:CGRectMake(0, 0, 0, 0) animated:YES];

NSRange range = NSMakeRange(textView.text.length - (textView.text.length+1),1);
[textView scrollRangeToVisible:range];

textView.scrollEnabled = NO;
[textView resignFirstResponder];}

编辑:

为遇到类似问题的人更新了代码:

- (IBAction)hideKeyboard:(id)sender {

//textView.scrollEnabled = NO;
[textView resignFirstResponder];

NSRange range = NSMakeRange(0,1);
[textView scrollRangeToVisible:range];

}

2 个答案:

答案 0 :(得分:5)

您创建的范围从-1开始!您可以按如下方式创建范围,这样更容易:

NSRange range = NSMakeRange(0, 1);

此范围从索引0(第一个字符)开始,并展开超过1个字符。

答案 1 :(得分:-1)

我找到了这个答案,关于将textView滚动到顶部,在此论坛之前,我现在没有找到它。但这是答案: 您只需使用此方法停止滚动:

- (void)killScroll :(UIScrollView*)scrollView 
{
    CGPoint offset = scrollView.contentOffset;
    offset.x -= 1.0;
    offset.y -= 1.0;
    [scrollView setContentOffset:offset animated:NO];
    offset.x += 1.0;
    offset.y += 1.0;
    [scrollView setContentOffset:offset animated:NO];
}

并在调用之后,使用着名的方法:

[yourTextView scrollsToTop];