1

与 iBooks 应用程序一样,当您下拉 tableview 时,会出现一个搜索栏和分段控件,以允许您在两种类型的视图之间进行搜索和切换。

当你拉得足够远时它会停留在那个位置,或者当你拉得足够高时它会被隐藏起来。

我正在尝试用UISegmentedControl. 到目前为止,我已经成功地将分段控件作为子视图添加到表中。(它有一个负 Y 框架,所以让它贴在 tableview 上方)。

我也实现了这段代码:

- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView {
    float yOffset = scrollView.contentOffset.y;

    if (yOffset < -70) {
        [scrollView setContentOffset:CGPointMake(0.0f, -70.0f) animated:YES];
    } else if (yOffset > -10) {
        [scrollView setContentOffset:CGPointMake(0.0f, -11.0f) animated:YES];
    }
}

这很好用,直到我尝试使用分段控件。表格就像滚动一样,完全忽略分段控件(即,如果我点击一个分段,它甚至不会被选中,而是表格向上滚动,隐藏分段控件。

我确实使用了该scrollViewDidScroll方法,但这使它变得有问题并且滚动跳跃。

我也尝试制作分段控件exclusiveTouch = YES,但这没有任何效果。

我会感谢所有的帮助!提前致谢!

4

1 回答 1

0

这是我的有效代码:

- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    //
    //  Table view
    //
    if ([scrollView isKindOfClass:[myTableView class]]) {
        //
        //  Discover top
        //
        CGFloat topY = scrollView.contentOffset.y + scrollView.contentInset.top;

        if (topY <= self.tableHeaderHeightConstraint.constant) {
            [self setIsScrolledToTop:YES];
        } else {
            [self setIsScrolledToTop:NO];
        }
    }
}

- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView
{
    //
    //  Table view
    //
    if ([scrollView isKindOfClass:[myTableView class]]) {
        //
        //  Toggle favourite category
        //
        if ([self isScrolledToTop]) {
            //
            //  Show
            //
        } else {
            //
            //  Hide
            //
        }
    }
}

编辑了上面的代码,使其更通用,但在语法上它是正确的

于 2013-03-19T16:12:54.163 回答