Я пытаюсь создать пользовательский "мигающий курсор" в UIKit, я пробовал, как показано ниже, с двумя функциями, которые в основном продолжают звонить друг другу, пока курсор не будет скрыт. Но это приводит к приятной бесконечной рекурсии... по какой-то причине функции сразу называют друг друга, а не каждую половину секунды, как ожидалось.
Я попытался вернуться, если параметр "закончен" не равен YES (раскомментируя строку "if (! ok)", но это вообще не приводит к анимации...
Любая лучшая идея? Я что-то пропустил, есть ли гораздо более простой способ сделать "мигающий курсор"?
- (void)onBlinkIn:(NSString *)animationID finished:(BOOL)ok context:(void *)ctx {
if (cursorView.hidden) return;
//if (!ok) return;
[UIView beginAnimations:nil context:UIGraphicsGetCurrentContext()];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(onBlinkOut:finished:context:)];
cursorView.textColor = [UIColor grayColor];
[UIView commitAnimations];
}
- (void)onBlinkOut:(NSString *)animationID finished:(BOOL)ok context:(void *)ctx {
if (cursorView.hidden) return;
[UIView beginAnimations:nil context:UIGraphicsGetCurrentContext()];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[UIView setAnimationDuration:0.5f];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(onBlinkIn:finished:context:)];
cursorView.textColor = [UIColor clearColor];
[UIView commitAnimations];
}