Je suis en train de créer un diaporama en utilisant NSTimer ... Mais le code suivant ne défile pas les images à intervalles réguliers ...Problème d'utilisation NSTimer pour le diaporama
- (void)tilePages
{
// Calculate which pages are visible
CGRect visibleBounds = pagingScrollView.bounds;
int firstNeededPageIndex = floorf(CGRectGetMinX(visibleBounds)/CGRectGetWidth(visibleBounds));
int lastNeededPageIndex = floorf((CGRectGetMaxX(visibleBounds)-1)/CGRectGetWidth(visibleBounds));
firstNeededPageIndex = MAX(firstNeededPageIndex, 0);
lastNeededPageIndex = MIN(lastNeededPageIndex, [self imageCount] - 1);
// Recycle no-longer-visible pages
for (ImageScrollView *page in visiblePages) {
if (page.index < firstNeededPageIndex || page.index > lastNeededPageIndex) {
[recycledPages addObject:page];
[page removeFromSuperview];
}
}
[visiblePages minusSet:recycledPages];
// add missing pages
for (int index = firstNeededPageIndex; index <= lastNeededPageIndex; index++) {
if (![self isDisplayingPageForIndex:index]) {
ImageScrollView *page = [self dequeueRecycledPage];
if (page == nil) {
page = [[[ImageScrollView alloc] init] autorelease];
}
[self configurePage:page forIndex:index];
[pagingScrollView addSubview:page];
[visiblePages addObject:page];
}
}
}
Dans la méthode viewWillAppear j'ai utilisé ...
timer = [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(timerFired:) userInfo:nil repeats:YES];
et
pour appeler l'événement à être déclenché à des intervalles que j'ai utilisé ...
-(void)timerFired:(NSTimer *)timer
{
[self tilePages];
}
j'ai essayé de débogage. L'événement est déclenché à 3 secondes, mais le fichier tilePages n'est pas appelé. J'ai utilisé la même chose pour la méthode scrollViewDidScroll où dans le tilePages est bien exécuté ... Quel pourrait être le problème ??? S'il vous plaît aider ...
* "mais les tuilesPages ne sont pas appelées" * - avez-vous vérifié cela en utilisant les points de rupture de traçage ou de traçage? –
Ya ... j'ai utilisé le point d'arrêt pour vérifier que ... le programme entre dans la méthode après 3 secondes mais il n'est pas exécuté ... Le même code est exécuté quand la méthode scrollViewDidScroll est appelée ... est "[[ auto tilePages]; " code assez pour obtenir un diaporama ... ??? –