iphone setAnimationWillStartSelector / setAnimationDidStopSelector не работает (пример тикера с прокруткой) - PullRequest
2 голосов
/ 27 ноября 2009

Я отображаю тикер в нижней части представления (представьте панель тикера заголовков новостного канала) в виде горизонтальной прокрутки. Он работает правильно, когда я устанавливаю repeatCount равным бесконечности, но я хочу иметь возможность выполнять некоторые другие функции, когда анимация запускается и останавливается вместо этого. Однако после прочтения документации и многих примеров в Интернете я не могу заставить setAnimationWillStartSelector / setAnimationDidStopSelector ответить.

Вот мой код:

- (void)animateView {    
[UIScrollView setAnimationDelegate:self];    
[UIScrollView setAnimationWillStartSelector:@selector(animationStart:context:)];    
[UIScrollView setAnimationDidStopSelector:@selector(animationStop:finished:context:)];    
[UIScrollView beginAnimations:@"pan" context:nil];    
[UIScrollView setAnimationDuration:10.0f];    
[UIView setAnimationRepeatCount:1];    
[UIView setAnimationBeginsFromCurrentState:YES];    
[UIScrollView setAnimationCurve:UIViewAnimationCurveLinear];    
tickerScrollView.contentOffset = CGPointMake(textLabelRect.size.width,0);    
[UIScrollView commitAnimations];    
}    
- (void)animationStart:(NSString *)animationID context:(void *)context {    
NSLog(@"animationWillStart");    
}
- (void)animationStop:(NSString *)animationID finished:(BOOL)finished context:(void *)context {    
NSLog(@"animationDidStop");    
[self animateView];    
}

На данный момент этот код находится в моем подклассе UIViewController. Тем не менее, я также попытался поместить все это в свой делегат приложения, в то же время явно меняя setAnimationDelegate. Я пытался использовать различные animationDurations, repeatCounts и т. Д., Но все равно не повезло.

Был бы очень признателен за любую помощь. Спасибо

1 Ответ

6 голосов
/ 01 декабря 2009

Вы можете попробовать поместить setAnimationDelegate, setAnimationWillStartSelector и setAnimationDidStopSelector внутри блока анимации. Согласно документации Справочной библиотеки iPhone OS, эти методы должны быть помещены в блок анимации, чтобы он работал.

Надеюсь, это поможет! АОБ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...