关于在 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 无法正常工作(它返回顶部并且不显示任何滚动条