Эта проблема вызвана большой анимацией на блок.Я сделал решение на основе NSTimer, подобное предложенному выше, и оно работало ... но движение было прерывистым (если я не вставлял анимацию в каждый триггер события таймера).
Итак, поскольку анимация все равно требовалась, я нашел решение, которое не требует таймера.Он анимирует только небольшое расстояние, и, таким образом, нажатие кнопки все еще является точным, с небольшой ошибкой, которая в моем случае очень незаметна в пользовательском интерфейсе, и ее можно уменьшить в зависимости от ваших параметров.ошибка в любой момент времени <15.0, которая может быть уменьшена для большей точности в зависимости от ваших требований к скорости анимации.Вы также можете уменьшить длительность для большей скорости. </p>
- (void)conveyComplete:(UIView*)v
{
[self convey:v delay:0];
}
- (void)convey:(UIView*)v delay:(int)nDelay
{
[UIView animateWithDuration:.5
delay:nDelay
options:(UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
animations: ^
{
CGRect rPos = v.frame;
rPos.origin.x -= 15.0;
v.frame = rPos;
}
completion: ^(BOOL finished)
{
[self conveyComplete:v];
}];
}