mah*_*udz 61 iphone uiscrollview
我以前用过UIScrollView,现在正在使用它,从来没有遇到过问题.我现在将它添加到一个旧的应用程序,虽然它按预期工作(我可以看看内容,用我的手指滚动,所有的边界和大小设置正确,所以内容中没有空白的空间,等等.),我只是无法scrollToRectVisible上班.我甚至简化了调用,以便它只移动到0,0位置:
[scrollView scrollRectToVisible:CGRectMake(0, 0, 10, 10) animated:YES];
Run Code Online (Sandbox Code Playgroud)
或将其移至0,200:
[scrollView scrollRectToVisible:CGRectMake(0, 200, 10, 10) animated:YES];
Run Code Online (Sandbox Code Playgroud)
我甚至做了一个快速的应用来测试这个,我可以scrollRectToVisible像我期望的那样去那里工作.但在我的旧应用程序中,我似乎无法做任何事情.
我可以使用scrollView滚动setContentOffset:,但这不是我想要的.
此scrollView及其内容由IB在nib中定义,并与IBOutlet一起使用.我在我的应用程序中使用的唯一代码来处理scrollView是
[scrollView setContentSize:CGSizeMake(scrollView.contentSize.width, imageView.frame.size.height)];
Run Code Online (Sandbox Code Playgroud)
(我只对垂直滚动而不是水平感兴趣).
有没有人遇到这样的问题?
我比较了两个应用程序中的scrollView属性,它们是相同的.
附录:
我的scrollViews框架是:0.000000 0.000000 480.000000 179.000000
我的scrollViews contentSize是:0.000000 324.000000
它仍然像我想要滚动到的矩形已经可见,并且不需要滚动.不确定这是不是正在发生的事情.这只是最神奇的事情.似乎很容易解决这个问题......
附录#2:
这就是我没有做的事情scrollRectToVisible:
CGPoint point = myRect.origin;
if (![clefScrollView pointInside:point withEvent:nil]) {
point.x = 0;
if (point.y > clefScrollView.contentSize.height - clefScrollView.bounds.size.height)
point.y = clefScrollView.contentSize.height - clefScrollView.bounds.size.height;
[clefScrollView setContentOffset:point animated: YES];
}
Run Code Online (Sandbox Code Playgroud)
关于此scrollView的其他所有内容都按预期工作,但是scrollRectToVisible.为什么?!?任何疯狂的猜测?
mah*_*udz 113
一个多月后,我终于明白了.虽然上面的替代方案效果很好,但它一直困扰着我,我不得不最终解决它.事实证明,这有点像一个愚蠢的错误.
这是我的viewDidLoad中的旧代码,我在其中设置了scrollView:
[clefScrollView setContentSize:CGSizeMake(clefScrollView.contentSize.width, clefView.frame.size.height)];
Run Code Online (Sandbox Code Playgroud)
scrollView的高度或宽度值不能为0!我认为这已经过去了,因为我假设ScrollView的尺寸开始时有一个有效的尺寸,而我错过了一个尺寸为零的事实!
这有效:
[clefScrollView setContentSize:CGSizeMake(clefView.frame.size.width, clefView.frame.size.height)];
Run Code Online (Sandbox Code Playgroud)
希望这有助于那里的人.我确实花了太多时间试图调试它.
Jon*_*ing 47
是的,我没有成功scrollRectToVisible:animated:,但setContentOffset:animated:总是为我工作.出于好奇,你为什么不想用setContentOffset:animated:?这似乎是正确的解决方案.
小智 5
您可能想要检查并查看scrollView的delaysContentTouches属性设置为NO.
如果您在滚动视图的子视图中调用方法scrollRectToVisible或setContentOffset触摸,那么您的scrollView可能会通过延迟触摸来保持状态.
因此,请确保在scrollView中设置以下内容.
scrollView.delaysContentTouches = NO;
Run Code Online (Sandbox Code Playgroud)
您很可能能够将带有和不带动画设置的scrollView移动到YES.
| 归档时间: |
|
| 查看次数: |
55953 次 |
| 最近记录: |