我正在尝试在我的 iOS 应用程序中使用 UIScrollView 作为导航设备。基本上,我希望应用程序根据启用分页的 UIScrollView 的位置加载特定内容。它有点像导航轮。
目前,我有一个两页 (2*320) 的 ScrollView ,我正在使用 scrollViewDidEndDragging
委托(delegate)方法和 contentoffset.x
加载适当的内容。我尝试这样确定 ScrollView 的位置:
if (scrollView.contentOffset.x < 320) {
// Load content 1
}
else if (scrollView.contentOffset.x >= 320) {
// Load content 2
}
我的问题是我不明白如何使用 contentoffset 或者它不适合处理我的问题。无论哪种方式,我都被困住了。有人可以让我知道哪里出错和/或告诉我一种更有效的方法来确定 ScrollView 的位置吗?
我很笨,我忘记说问题是什么了……基本上,我无法跟踪 ScrollView 的位置。当我移动到第二页时,如果我超过 620 限制(向右弹跳),它只会记录更改。但是当我回到起始位置(第 1 页)时,它确实记录了更改。换句话说,我的跟踪不准确。
委托(delegate)和其他一切工作正常,我记录它们!
最佳答案
这很难说,因为您从未具体提到问题是什么,但我会对此进行一些猜测。
如果根本没有调用委托(delegate)方法,您需要记住设置 ScrollView 委托(delegate):
[myScrollView setDelegate:self];
否则,使用 scrollViewDidEndDragging
检测 ScrollView 偏移量的问题在于,它会检查您停止拖动的点的偏移量,这可能位于目标页面矩形内,也可能位于起始页面矩形内页面正确。作为替代方案,我建议您使用 scrollViewDidEndDecelerating
检查内容偏移量,因为它会在 ScrollView 在其目标页面停止时立即调用。
-(void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView {
if (scrollView.contentOffset.x < 320) {
NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
}
else if (scrollView.contentOffset.x >= 320) {
NSLog(@"%@",NSStringFromCGPoint(scrollView.contentOffset));
}
}
关于objective-c - 检测 UIScrollView 位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14012444/