关于在UIScrollView中滚动

时间:2012-06-27 05:16:58

标签: objective-c ios uiscrollview uitextview

我有一些内容的滚动视图。加载内容后,我使用以下代码移动到滚动视图的顶部

  [scrollViewCustom setContentOffset:CGPointMake(0.0, 0.0) animated:NO];

有效。有一个例外:

我有UITextView。如果我向它添加一些文本,那么滚动视图永远不会回到这个代码的顶部。我必须手动滚动到顶部。

我甚至尝试在向UITextView添加文字后添加相同的代码。

有人可以帮忙吗?感谢。

注意:所以,这是解决方案:

基本上UITextView派生自UIScrollView,因此,每当有某些文字时,它会尝试滚动以使文字可见。我已将UITextView替换为UILabel,它就像一个魅力!

3 个答案:

答案 0 :(得分:0)

而不是

 [scrollViewCustom setContentOffset:CGPointMake(0.0, 0.0) animated:NO];

使用

[scroll scrollRectToVisible:CGRectMake(0,0, 100,100) animated:NO];

答案 1 :(得分:0)

 - (void)viewDidLoad{
 scroll.contentSize=CGSizeMake(320, 400);
 }

 - (void)scrollViewToCenterOfScreen:(UIView *)theView {  
CGFloat viewCenterY = theView.center.y;  
CGRect applicationFrame = [[UIScreen mainScreen] applicationFrame]; 
CGFloat availableHeight;

    availableHeight = applicationFrame.size.height - 300; 

CGFloat z = viewCenterY - availableHeight / 2.0;  
if (z < 0) {  
    z = 0;  
 }  
 [scroll setContentOffset:CGPointMake(0, z) animated:YES];  
}

-(void)textViewDidBeginEditing:(UITextView *)textView{
[self scrollViewToCenterOfScreen:scroll];

}

 - (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range  replacementText:(NSString *)text
 {
if (range.length==0) {
    [scroll setContentOffset:CGPointMake(0, 0) animated:YES];  
        return NO;
  }
 }

答案 2 :(得分:0)

只需两步:

// define the area that is initially visible
 scrollViewCustom.frame = CGRectMake(0, 5, 354, 500);

// then define how much a user can scroll it
[scrollViewCustom setContentSize:CGSizeMake(354, 960)];

In addition,clear the background color of scroll view to show the text. 
scrollViewCustom.backgroundColor = [UIColor clearColor];