1

iBooks アプリと同様に、テーブルビューをプルダウンすると、検索バーとセグメント化されたコントロールが表示され、検索して 2 種類のビューを切り替えることができます。

十分に引き下げるとその位置に固定され、テーブルビューを十分に引き上げると非表示になります。

で同じことを実装しようとしていUISegmentedControlます。これまでのところ、セグメント化されたコントロールをサブビューとしてテーブルに正常に追加しました。(負の Y フレームがあるため、テーブルビューの上に貼り付けます)。

このコードも実装しました:

- (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 に答える