Ger*_*acs 8 objective-c uiscrollview ios contentoffset
我试图在我的iOS应用程序中使用UIScrollView作为导航设备.基本上,我希望应用程序根据启用分页的UIScrollView的位置加载特定内容.它有点像导航轮.
目前,我有一个两页(2*320)的scrollview,我正在使用scrollViewDidEndDragging委托方法并contentoffset.x加载适当的内容.我试着确定scrollview的位置:
if (scrollView.contentOffset.x < 320) {
// Load content 1
}
else if (scrollView.contentOffset.x >= 320) {
// Load content 2
}
Run Code Online (Sandbox Code Playgroud)
我的问题是我要么不理解如何使用contentoffset,要么不适合处理我的问题.无论哪种方式,我都被困住了.有人能告诉我出错的地方和/或向我展示确定滚动视图位置的更有效方法吗?
我很傻,我忘了提问题是什么......基本上,我无法跟踪scrollview的位置.当我移动到第二页时,如果我超过620限制(向右反弹),它只会记录更改.但是当我回到起始位置(第1页)时,它会注册更改.换句话说,我的跟踪不准确.
代表和其他一切工作正常,我记录下来!
Mic*_*lum 16
很难说,因为你从来没有特别提到问题是什么,但我会对它做一些猜测.
如果没有调用委托方法,则需要记住设置滚动视图委托:
[myScrollView setDelegate:self];
否则,使用scrollViewDidEndDragging检测滚动视图偏移的问题是它将检查停止拖动的位置处的偏移量,该位置可能在目标页面rect内,或者在起始页面rect内.作为替代方案,我建议您使用scrollViewDidEndDecelerating检查内容偏移量,因为一旦滚动视图在其目标页面停止,它就会被调用.
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView.contentOffset.x < 320) {
NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
}
else if (scrollView.contentOffset.x >= 320) {
NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
}
}
Run Code Online (Sandbox Code Playgroud)
我想这可以帮到你:).随着scrollViewDidScroll你总是让你的滚动视图的确切位置:
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
if (scrollView.contentOffset.x < 320)
{
// Load content 1
}
else if (scrollView.contentOffset.x >= 320)
{
// Load content 2
}
}
Run Code Online (Sandbox Code Playgroud)
NSLog(@"Position: %g", scrollView.contentOffset.x);
不要忘记UIScrollViewDelegate.h文件中的委托.
| 归档时间: |
|
| 查看次数: |
24091 次 |
| 最近记录: |