Обнаружение прикосновений к анимированному (движущемуся) виду

Проблема, с которой я сталкиваюсь, заключается в обнаружении касаний UIView или UIViewController, которые анимируют движение по экрану. Я пробовал UITapGesture, touchesbegan и UIbutton. Но я обнаружил, что проблема заключается в использовании блока анимации. Расположение представления установлено в его конечном местоположении и не может быть затронуто во время движения. (Вы можете коснуться места, где вид остановится, и прикосновения будут прочитаны). Я пробовал UIView анимационных блоков для анимации. Я также пытался использовать CAKeyframeAnimation, но все они имеют одинаковый результат.

    [UIView animateWithDuration:10 delay:1 options:(UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionAllowUserInteraction) animations:^{
    [testViewController.view setFrame:CGRectMake(900, 20, 100,  100)];

} completion:^(BOOL finished) {
    // Animate moving to another location
}];

Вот простой пример того, что я хочу. Я хочу, чтобы изображение мяча случайно перемещалось по экрану. Я хочу знать, когда касаются мяча.


person Jaybit    schedule 11.01.2012    source источник


Ответы (1)


Я случайно наткнулся на ответ в другом проекте. Проблема заключалась в том, что я пытался найти кадр представления во время его анимации. И кадр не меняется во время анимации. Но есть свойство слоев, которое помогает.

[view.layer presentationLayer]

вы можете получить текущий кадр анимируемого вида из этого свойства слоя. Затем я могу запустить тест с фреймом PresentationLayers.

person Jaybit    schedule 23.08.2012