2013-05-06 2 views
0

У меня есть UICollectionView, содержащий несколько ячеек, содержащих представления, которые могут перетаскивать/выходить из представления коллекции в другое представление, находящееся за пределами представления коллекции. Этот процесс работает нормально. Однако, когда перетаскиваемый вид заносится в новое местоположение, я хочу анимировать падение, масштабируя представление перетаскивания до его полного размера, а затем обратно до нуля, прежде чем удалять его из супервизора. Это работает в других областях приложения, когда я перетаскиваю другие объекты вокруг, но это единственное, что связано с представлением коллекции.iOS Animation Block Gesture Recognizer

[UIView animateWithDuration:0.375 
       animations:^{ dragView.transform = CGAffineTransformMakeScale (1.0f, 1.0f); dragView.transform = CGAffineTransformMakeScale(0.0f, 0.0f); } 
       completion:^(BOOL finished) { [dragView removeFromSuperview]; } ]; 

Если я не использую блок завершения, анимация не работает, по-видимому, потому, что представление удаляется до завершения анимации. Но если я использую блок завершения, когда анимация завершается, последующие жесты панорамы (используемые для прокрутки представления коллекции) передаются на распознаватель жестов, используемый в моем контроллере представления для других вещей, а не для прокрутки представления коллекции. В результате после анимации изображение коллекции «заперлось». Если я удалю блок завершения, проблема с распознаванием жестов не произойдет после этого, но анимация тоже не работает.

Я попытался установить userInteractionEnabled = YES в представлении коллекции после анимации, но это не помогает.

Любые предложения? TIA

ответ

1

omg, что вы ожидаете от двух одновременных анимаций того же типа? Может быть, это решение?

первый вызов анимации:

[UIView animateWithDuration:0.375 
       animations:^{ dragView.transform = CGAffineTransformMakeScale (1.0f, 1.0f); } 
       completion:^(BOOL finished) { /*call the second animation*/ } ]; 

второй анимации вызова:

//second animation 
[UIView animateWithDuration:0.375 
       animations:^{ dragView.transform = CGAffineTransformMakeScale(0.0f, 0.0f); } 
       completion:^(BOOL finished) { [dragView removeFromSuperview]; } ]; 
+0

Спасибо за предложение. Просто попробовал, и результат тот же. Анимация работает, но проблема с распознавателем жестов сохраняется. Спасибо за эту идею. – RegularExpression

+0

также вы можете попробовать метод performSelector: withBlock: afterDelay: – user2159978

Смежные вопросы