3

J'ai un UINavigationController normal avec un UIViewController dedans, quand mon contrôleur de vue a une invite qui lui est appliquée (via un UINavigationItem.prompt = @ "une invite"), l'invite anime la vue de UIViewController vers le bas.UINavigationItem.prompt apparaissant, déplace la vue ci-dessous. Comment écouter une nouvelle invite?

Ma question est, y a-t-il une pomme pour savoir qu'une invite apparaîtra (et peut-être le temps d'animation qu'il faudra) pour que je puisse relancer la vue? Par exemple: le contenu semble ne pas bouger. Ou dois-je écrire moi-même cette fonctionnalité? Ce que je cherche vraiment, c'est une notification similaire aux notifications KeyboardWillShow/Hide.

Notez que le contrôleur n'est pas l'objet qui applique l'invite et que l'invite apparaît et disparaît de manière asynchrone. Ne cherchez pas de code, juste des conseils.

Répondre

1

Vous pouvez toujours utiliser kvo pour obtenir un rappel chaque fois que la valeur change. En ce qui concerne le temps pris, il peut s'agir de la valeur par défaut (0,25 seconde) ou de la constante UINavigationControllerHideShowBarDuration. J'imagine que vous avez juste besoin de l'avoir "assez proche" pour faire face à cette animation.

+0

c'est une bonne idée! Merci. – n3wscott

+0

Merci à Ed, j'ai une solution qui fonctionne très bien: dans viewDidAppear je m'inscris pour "prompt" sur navigationItem, dans viewDidDisappear Je désinscrit. Ensuite, il suffit de regarder les changements pour voir si je dois déplacer mon contenu. Lisez ceci pour plus d'informations: http://developer.apple.com/mac/library/documentation/cocoa/Conceptual/KeyValueObserving/Concepts/KVOBasics.html Fyi: la durée de l'animation est de 0,35 et il se déplace de 30 pixels . – n3wscott