まず、これを検索する方法がわからなかったので、質問として投稿しました。既に質問されていたらすみません、見つけられませんでした。
scrollView を App Drawer のように見せたいので、3 つの可能なオフセット (画面など) があります。
これが私が試したコードですが、これはスクロールが終了するまでドラッグして指を離さない場合にのみ機能しますが、スワイプしても終了しません:
- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate {
if (scrollView.contentOffset.x >= 0 && scrollView.contentOffset.x <= 640)
{
if (oldOffset == 0)
{
if (scrollView.contentOffset.x > 100 && scrollView.contentOffset.x < 420)
{
[scrollView setContentOffset:CGPointMake(320, 0) animated:NO];
oldOffset = 320;
}
else if (scrollView.contentOffset.x > 420)
{
[scrollView setContentOffset:CGPointMake(640, 0) animated:NO];
oldOffset = 640;
}
else
{
[scrollView setContentOffset:CGPointMake(0, 0) animated:NO];
}
}
else if (oldOffset == 320)
{
if (scrollView.contentOffset.x < 220)
{
[scrollView setContentOffset:CGPointMake(0, 0) animated:NO];
oldOffset = 0;
}
else if (scrollView.contentOffset.x > 420)
{
[scrollView setContentOffset:CGPointMake(640, 0) animated:NO];
oldOffset = 640;
}
else
{
[scrollView setContentOffset:CGPointMake(320, 0) animated:NO];
}
}
else {
if (scrollView.contentOffset.x < 220) {
[scrollView setContentOffset:CGPointMake(0, 0) animated:NO];
oldOffset = 0;
}
else if (scrollView.contentOffset.x < 540) {
[scrollView setContentOffset:CGPointMake(320, 0) animated:NO];
oldOffset = 320;
}
else
{
[scrollView setContentOffset:CGPointMake(640, 0) animated:NO];
}
}
}
}