我需要让我的 UISCrollView 只接受一个方向的滚动,而不仅仅是一个维度。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 应该表现得好像它总是在第一页。谢谢。