1

Je pense que cela devrait être évident pour moi, mais pour une raison quelconque, je ne peux pas comprendre cela. J'ai une interface de navigation avec la barre de navigation, la barre d'outils et la vue primaire. Parfois, l'utilisateur effectue une action qui provoque l'affichage d'un indicateur de progression au milieu de la vue. Alors que l'indicateur de progression (qui est un UIView personnalisé) en rotation au milieu, je ne veux pas que l'entrée tactile soit autorisée à aller à l'interface sous-jacente (vue principale, barre de navigation, barre d'outils, etc.). Mais cela ne semble pas trivial.iPhone: comment configurer une "vue bloqueur" de taille fenêtre?

J'ai essayé (et échoué) de créer une vue simple dont le seul travail est d'avaler l'entrée tactile et de l'utiliser comme sous-vue de la fenêtre - pas de dés, il n'obtient jamais les événements tactiles (et oui, il a userInteractionEnabled). J'ai essayé de le verrouiller comme un contrôleur de vue modale transparent, mais ceux-ci ne semblent jamais être transparents.

Pensées? Qu'est-ce que je rate?

Merci!

Répondre

3

Vous pouvez arrêter le applicaiton d'accepter les événements d'interaction avec

[[UIApplication sharedApplication] beginIgnoringInteractionEvents]; 

Et puis commencer à prendre des événements à nouveau

[[UIApplication sharedApplication] endIgnoringInteractionEvents]; 

Mais je serais extrêmement prudent avec cela car il empêche l'utilisateur d'interagir avec votre application tous ensemble.

Pour suggérer une autre route. Vous pouvez afficher un UIAlertView créé avec juste la méthode init pour contenir l'indicateur de progression au milieu. Si vous utilisez la méthode init, il n'y aura pas de boutons avec lesquels l'utilisateur pourra interagir. Ensuite, lorsque vous avez terminé, vous pouvez ignorer la vue d'alerte. Si vous souhaitez donner à l'utilisateur un moyen d'annuler l'action, vous pouvez même utiliser un bouton dans la vue d'alerte pour l'annuler.

+0

Brandon, merci pour la réponse. Je n'étais pas conscient de la capacité d'ignorer globalement les événements - dans ce cas, cela pourrait être le plus opportun pour moi, bien que je pense que c'est un gros marteau pour ce que je fais. La vue des alertes personnalisées est aussi intéressante, mais elle semble définitivement un peu sexy - Je pense que ça devrait être plus simple! :) Merci –

1

Vous pouvez créer un UIWindow transparent avec un windowLevel> 1.

+0

Merci-- J'ai pensé à cela, mais Speaketh les docs Apple: "Bien que iPhone OS supporte les couches de couches les unes sur les autres, votre application ne devrait jamais créer plus d'une fenêtre." Ayant été rejeté du processus d'approbation d'Apple pour moins que cela avant, j'espère trouver un moyen qui ne soit pas caractérisé si négativement dans les docs? –

+0

Kenny: Je suis un imbécile de ne pas être capable de faire quelque chose de similaire avec un UIView vanille dans la fenêtre de l'application normale qui est transparente et se trouve au-dessus de tout le reste dans mon application? J'ai essayé ce que je pensais être cela, mais les touches semblent toujours passer. –

Questions connexes