objective-c - 检测 UIScrollView 位置

标签 objective-c ios uiscrollview contentoffset

我正在尝试在我的 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/

相关文章:

ios - 可扩展表格 View 单元格 - 使用单元格问题

ios - UIAlertController 显示 UIAlertActions 的空白标题

iphone - 从不存在的 View 中删除 subview

ios - 如何显示 View ?

objective-c - 通过在 Lion 中拖动来重新排列表格行

android - 电晕连续震动

iphone - UIScrollView 触摸似乎不起作用

ios - 来自 WSDL 的 Objective-C 的 SOAP 客户端生成器?

ios - GCDAsyncSocket 接收数据时卡住 UI

ios - 记录 UIScrollView 的 subview 显示未添加的 subview