下方に自動スクロールするtableViewを備えたアプリを使用しているため、通常はテーブルの一番上にジャンプするステータスバーをタップすると、問題が発生します(スクロールを開始しますが、自動スクロールにチェックマークが付いている場合は停止して終了します真ん中のどこか)。
私はそれを無効にしたい、または少なくともそれがタップされたときにいくつかのコードを押し込んでタイマーを一時的に一時停止し、それがトップに達したときにそれを再開したい。
これらのいずれかを達成する方法はありますか?
下方に自動スクロールするtableViewを備えたアプリを使用しているため、通常はテーブルの一番上にジャンプするステータスバーをタップすると、問題が発生します(スクロールを開始しますが、自動スクロールにチェックマークが付いている場合は停止して終了します真ん中のどこか)。
私はそれを無効にしたい、または少なくともそれがタップされたときにいくつかのコードを押し込んでタイマーを一時的に一時停止し、それがトップに達したときにそれを再開したい。
これらのいずれかを達成する方法はありますか?
UIScrollView
(およびUITableView
そのサブクラスとして)scrollsToTop
デフォルトでに設定されるプロパティがありYES
、ステータスバーをタップすると上にスクロールします。あなたがしなければならないのはそれをに設定することだけですNO
。
ただし、iOSユーザーはこの動作を期待する可能性があるため、オフにすることはユーザーエクスペリエンスの観点から最善のアイデアではない可能性があることに注意してください。特定の時間にのみ無効にする必要がある場合は、そのままにしてデリゲートメソッドからYES
戻ることもできます。NO
-scrollViewShouldScrollToTop:
実際、デリゲートを介してそれを処理することは、あなたのケースに完全に適合するかもしれません:
- (BOOL)scrollViewShouldScrollToTop:(UIScrollView *)scrollView
{
// disable timer
return YES;
}
- (void)scrollViewDidScrollToTop:(UIScrollView *)scrollView
{
// re-enable timer
}
あなたが試すことができます:
[myView setScrollsToTop:NO];
迅速な5の場合
override func scrollViewShouldScrollToTop(_ scrollView: UIScrollView) -> Bool {
return false
}