1

Icarousel を使用して iPhone アプリケーションを作成しています。カルーセルを2つ使用しました。最初にスクロールすると、最初のスクロールで2番目にスクロールし、2番目にスクロールすると、2番目のスクロールで最初にスクロールします。

私はこれを正しく行うことができますが、無限ループの問題があります。

   - (void)carouselDidEndScrollingAnimation:(iCarousel *)Carousel
{  
    if (Carousel == carouselSecond)
    {
        NSLog(@"***Second Scroll");
       [carouselFirst scrollToItemAtIndex:carouselSecond.currentItemIndex duration:2];
    }
    else if(Carousel == carouselFirst)
    {
        NSLog(@"***First Scroll");
    [carouselSecond scrollToItemAtIndex:carouselFirst.currentItemIndex duration:2];
    }
}

表示は ** Second Scroll * *First Scroll ** Second Scroll * *First Scroll ** Second Scroll * *First Scroll ** Second Scroll * *First Scroll ……

4

1 に答える 1

2

カルーセルがスクロールされた回数を追跡するには、Integer 変数を使用します。.h ファイルに次を追加します。

@property (nonatomic) NSUInteger numberofScrolls;

これをviewDidLoad行う:

self.numberofScrolls=0;

これを試してください:

 - (void)carouselDidEndScrollingAnimation:(iCarousel *)Carousel
{  
self.numberofScrolls++;
if(self.numberofScrolls%2!=0){    
    if (Carousel == carouselSecond)
    {
        NSLog(@"***Second Scroll");
       [carouselFirst scrollToItemAtIndex:carouselSecond.currentItemIndex duration:2];
    }
    else if(Carousel == carouselFirst)
    {
        NSLog(@"***First Scroll");
        [carouselSecond scrollToItemAtIndex:carouselFirst.currentItemIndex duration:2];
    }
}

}

ビューが読み込まれると、numberofScrolls0 に設定されます。ユーザーがスクロールを停止すると、carouselDidEndScrollingAnimationが呼び出されます --> 1 ずつ増加numberofScrollsし、カルーセル 2 が同じ位置にスクロールされます。カルーセル 2 のスクロールが完了すると、carouselDidEndScrollingAnimation再度呼び出されます。numberofScrolls再び増加します (現在は 2 です)。しかし今回はもう一方のビューを再度スクロールする必要はなく、self.numberofScrolls%20 になります。

于 2013-05-17T08:15:40.517 に答える