7

下方に自動スクロールするtableViewを備えたアプリを使用しているため、通常はテーブルの一番上にジャンプするステータスバーをタップすると、問題が発生します(スクロールを開始しますが、自動スクロールにチェックマークが付いている場合は停止して終了します真ん中のどこか)。

私はそれを無効にしたい、または少なくともそれがタップされたときにいくつかのコードを押し込んでタイマーを一時的に一時停止し、それがトップに達したときにそれを再開したい。

これらのいずれかを達成する方法はありますか?

4

3 に答える 3

15

UIScrollView(およびUITableViewそのサブクラスとして)scrollsToTopデフォルトでに設定されるプロパティがありYES、ステータスバーをタップすると上にスクロールします。あなたがしなければならないのはそれをに設定することだけですNO

ただし、iOSユーザーはこの動作を期待する可能性があるため、オフにすることはユーザーエクスペリエンスの観点から最善のアイデアではない可能性があることに注意してください。特定の時間にのみ無効にする必要がある場合は、そのままにしてデリゲートメソッドからYES戻ることもできます。NO-scrollViewShouldScrollToTop:

実際、デリゲートを介してそれを処理することは、あなたのケースに完全に適合するかもしれません:

- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
    // disable timer
    return YES;
}

- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
    // re-enable timer
}
于 2013-03-13T21:01:12.163 に答える
7

あなたが試すことができます:

[myView setScrollsToTop:NO];
于 2013-03-13T20:57:08.593 に答える
0

迅速な5の場合

override func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
    return false
}
于 2021-04-15T08:50:35.303 に答える