关于在 UIScrollView 内滚动

Posted

技术标签:

【中文标题】关于在 UIScrollView 内滚动【英文标题】:regarding scrolling inside UIScrollView 【发布时间】:2012-06-27 05:16:58 【问题描述】:

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

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

它有效。除了一个例外:

我有一个UITextView。如果我向其中添加一些文本,则滚动视图永远不会使用此代码返回顶部。我必须手动滚动到顶部。

我什至尝试在向UITextView 添加文本后输入相同的代码。

有人可以帮忙吗?谢谢。

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

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

【问题讨论】:

【参考方案1】:

代替

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

使用

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

【讨论】:

发生了什么,请描述一下 同理,使用给定的代码,它不会滚动到顶部,我必须手动执行。【参考方案2】:
 - (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;
  
 

【讨论】:

【参考方案3】:

只需两步:

// 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];

【讨论】:

对不起,我可以移动它,但是手动,而不是使用给定的代码。

以上是关于关于在 UIScrollView 内滚动的主要内容,如果未能解决你的问题,请参考以下文章

防止重叠的 UIScrollView 滚动

UIScrollView 无法正常工作(它返回顶部并且不显示任何滚动条

IOS UIScrollView + UIButton 实现页面和顶部标签页水平滚动效果

UIScrollView 显示为零?

UIScrollVIew 中的 UIView 不更新视图

UIScrollView 内 UIScrollView 内 UIScrollView