Приведенный ниже код предназначен для использования с просмотром прокрутки, при котором содержимое включается через равные промежутки времени и возвращается к началу после завершения, но ту же логику можно использовать для любой кнопки паузы / перезагрузки.
Таймер срабатывает при загрузке (initiateFeatureTimer) и делает паузу для взаимодействия с пользователем (начнется метод перетаскивания), позволяя пользователю просматривать контент столько, сколько ему захочется. Когда пользователь поднимает палец (прекращает перетаскивание), логическое значение featurePaused сбрасывается, но у вас также есть возможность добавить немного больше задержки.
Таким образом, при подъеме пальца скроллер мгновенно не сдвигается, он более реагирует на пользователя.
//set vars, fire first method on load.
featureDelay = 8; //int
featureInt = featureDelay-1; //int
featurePaused = false; //boolean
-(void)initiateFeatureTimer {
featureTimer = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(moveFeatureScroller) userInfo:nil repeats:true];
[featureTimer fire];
}
-(void)moveFeatureScroller {
if (!featurePaused){ //check boolean
featureInt++;
if (featureInt == featureDelay){
featureInt = 0; //reset the feature int
/*//scroll logic
int nextPage = (featurePage + 1) * w;
if (featurePage == features.count-1){ nextPage = 0; }
[featureScroller setContentOffset:CGPointMake(nextPage, 0)]; */
}
}
}
-(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView {
featurePaused = true; //pause the timer
}
-(void)scrollViewWillEndDragging:(UIScrollView *)scrollView withVelocity:(CGPoint)velocity targetContentOffset:(inout CGPoint *)targetContentOffset {
featurePaused = false; //restart the timer
featureInt = -3; //if you want to add an additional delay
}