Мое приложение состоит из картоподобного интерфейса и не должно делать ничего, кроме демонстрации автоматического маршрута.
У меня есть нарисованный (через изображение) маршрут, и приложение должно иметь "currentPosition"маркер для автоматического перемещения по маршруту, указывающий ход поездки.
Анимация работает хорошо, но как только пользователь касается экрана (случайно и т. д.), анимации полностью теряются с неправильной скоростьюи может закончить мерцание как сумасшедший.
Во-первых, 2 примера кода:
[UIView animateWithDuration:POINT_MOVEMENT_DURATION
delay:POINT_MOVEMENT_DELAY
options:UIViewAnimationOptionCurveEaseInOut
animations:^{
self.currentPosition.center = mp.point;
}
completion:^(BOOL finished){
NSLog(@"finished animation: %i", finished);
[self nextPoint:nil];
}
];
nextPoint - это функция для перехода к следующей точке.mp
- это переменная, хранящая пиксельные координаты на экране.
Теперь при запуске этого кода аниматин будет работать плавно, как видно в журналах:
2011-01-02 15:32:11.006 MAP Player[2258:307] finished animation: 1
2011-01-02 15:32:14.008 MAP Player[2258:307] finished animation: 1
2011-01-02 15:32:17.011 MAP Player[2258:307] finished animation: 1
Как толькоЯ касаюсь экрана, это переключится на 0
.
2011-01-02 15:32:26.642 MAP Player[2258:307] finished animation: 0
2011-01-02 15:32:26.647 MAP Player[2258:307] finished animation: 0
2011-01-02 15:32:26.653 MAP Player[2258:307] finished animation: 0
И в этот момент предмет будет мерцать / двигаться быстро, в неправильном направлении и т. Д.
Я нашел одинвещь: В ViewController после установки [self.view setUserInteractionEnabled:NO];
мерцание не может повториться, поэтому оно определенно связано с взаимодействием с пользователем.Он также не зависит от SingleTouch / MultiTouch.
Как создать анимацию, не зависящую от касания?Я думал добавить вызов setUserInteractionEnabled
в респонденты анимации.Но это не кажется правильным?