1

我曾尝试使用scrollViewWillEndDragging:withVelocity:targetContentOffset我的UITableView所以当我到达某个地方时,即表格顶部的隐藏分段控件,它会减速到分段控件的顶部,将其“粘贴”到导航栏的下方。

我有以下代码:

- (CGPoint)tableOffsetForProposedOffset:(CGPoint)proposedOffset currentOffset:(CGPoint)currentOffset {
    NSLog(@"Current:  %@", NSStringFromCGPoint(currentOffset));
    NSLog(@"Before:   %@", NSStringFromCGPoint(proposedOffset));

    if (currentOffset.y <= -10) {
        // Show segmented control
        NSLog(@"--- Show ---");
        proposedOffset.y -= 500;
    } else if (currentOffset.y >= 42) {
        // Hide segmented control
    }

    NSLog(@"Proposed: %@", NSStringFromCGPoint(proposedOffset));

    return proposedOffset;
}

- (void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
    *targetContentOffset = [self tableOffsetForProposedOffset:*targetContentOffset currentOffset:scrollView.contentOffset];

    NSLog(@"Returned: %@", NSStringFromCGPoint(*targetContentOffset));
}

请注意,我仅使用“500”进行测试

我所有的日志都显示了正确的细节,最重要的是,“返回”*targetContentOffset它也是正确的。即Returned: {0, -458}

我可能做错了什么?

提前感谢您的帮助!

4

1 回答 1

3

我不是 100% 确定(因为文档也对此非常保留)但我认为如果*targetContentOffset大于最大内容偏移量,则该值将被忽略。

于 2013-02-15T14:52:02.067 回答