UISCrollView が 1 次元だけでなく、1 方向のスクロールのみを受け入れるようにする必要があります。ScrollView には、水平方向のプレイリスト内の曲のアルバム アートが含まれています。ページ付きですので、表紙ごとにページがあります。ユーザーがカバーを左にスワイプまたはドラッグすると、次のカバーが所定の位置にスライドし、次の曲が再生されます。
前の曲やカバーに戻ることはできません。この動作を防ぐにはどうすればよいですか?
私は次のことを試しました:
- (void)scrollViewDidScroll:(UIScrollView *)scrolledView
{
if(scrollView.contentOffset.x < (pageIndex * 320) - 320)
[scrollView setContentOffset:CGPointMake((pageIndex * 320) - 320, 0)];
}
しかし、「前」の方向にすばやくスライドすると、カバーが「次の」方向に約 150px スライドします。
また、removeFromSuperview を使用して以前のカバーを削除しようとしましたが、これは黒いスペースを残すだけで、ドラッグは引き続き実行できます。
最後に、カバーを移動しようとしました:
-(void) reloadCoverScrollView{
for(int i = 1; i < [scrollView.subviews count]; i++){
[scrollView exchangeSubviewAtIndex:i withSubviewAtIndex:i - 1];
}
[scrollView setNeedsDisplay];
}
どうすればやりたいことを達成できますか? ScrollView は、常に最初のページにあるかのように動作する必要があります。ありがとう。