Cómo implementar transiciones interactivas en un controller de vista de contenedor personalizado

Implementé mi propio controller de vista contenedor personalizado y trato de hacerlo compatible con las transiciones de controller de vista iOS 7. Hago que mi controller de vista contenedor personalizado se ajuste a UIViewControllerContextTransitioning y me envíe a mí self cuando animateTransition: transitionDuration: y animateTransition: Todo funciona bien siempre y cuando utilice solo transiciones animadas.

Ahora quiero hacer que funcione con transiciones interactivas, así que llamo a la startInteractiveTransition: de startInteractiveTransition: interacción del controller de startInteractiveTransition: lugar de la animation del controller de animation animateTransition: usando self nuevamente como un parámetro. Sin embargo, si utilizo una UIPercentDrivenInteractiveTransition como controller de interacción, entonces llama a un método _animator en mi context (que es el controller de la vista del contenedor). Por supuesto, no implementé este método que es privado e indocumentado, por lo que se bloquea …

¿Me estoy perdiendo algo en mi implementación? ¿ UIPercentDrivenInteractiveTransition solo es compatible con las classs de Apple porque utiliza algo de magia de implementación (como cuando requiere que todo esté en un bloque de animation UIView )? La documentation y los files de encabezado hacen que parezca que podemos implementar nuestros propios controlleres de vista de contenedor y aún usar transiciones personalizadas, pero ¿es realmente cierto o simplemente una ilusión porque nadie lo haría?

Si no puedo usar UIPercentDrivenInteractiveTransition , ¿dónde debería estar exactamente la lógica de interacción / animation? ¿En el object UIViewControllerTransitionCoordinatorContext ? En el object UIViewControllerInteractiveTransitioning (lo más probable es que este object sea el controller …)? O en el object UIViewControllerAnimatedTransitioning (probablemente sea donde debería ocurrir la animation real, pero ¿eso significaría llamar animateTransition: varias veces durante la interacción o agregar nuevos methods para cada paso de la transición interactiva?)

Editar: la documentation dice:

Un object de transición interactivo controlado por porcentaje impulsa la animation personalizada entre la desaparición de un controller de vista y la aparición de otro. Se basa en un delegado de animation de transición (un object personalizado que adopta el protocolo UIViewControllerAnimatorTransitioning ) para configurar y ejecutar las animaciones.

No hay UIViewControllerAnimatorTransitioning protocolo UIViewControllerAnimatorTransitioning . Suponiendo que es un error o un cambio de nombre que ocurrió durante el desarrollo de iOS 7 y que realmente es el protocolo UIViewControllerAnimatedTransitioning , ¿cómo relacionamos el controller de interacción con el controller de animation? Supongo que es la responsabilidad del controller de visualización conducir la transición pero no veo ninguna API para hacer este enlace, por lo que significaría que UIPercentDrivenInteractiveTransition está reservado para las classs de Apple.

Estoy tratando de hacer lo mismo por mi count y terminé escribiendo mi propio equivalente UIPercentDrivenInteractiveTransition . Parece que la transición controlada por porcentaje solicita la animation y realmente la inicia después de que se inicia la transición interactiva. Sin embargo, tengo problemas para implementar la animation inversa al cancelar.

    Intereting Posts