Question

Je les interactions handicapés à mon avis primaire (qui contient des sous-vues que j'utilise sous forme de boutons).

Je garder cela invalide pendant que j'ai une vue secondaire en indiquant l'activité du réseau (chargement des données). Quand il est terminé, je Réactivez les interactions dans la vue principale.

Il en est ainsi l'utilisateur n'exploite pas ces boutons alors que le fonctionnement du réseau a lieu.

Quoi qu'il en soit, tout semble bien, mais si l'utilisateur commence à taper des boutons dans la vue principale, une fois que la réactivez se produit ces événements tactiles (des dernières quelques secondes) déclenchent effectivement. Pas la touche-a commencé, qui met en évidence les boutons, mais les fonctions appelées sur les touches à capital variable. Son comme son mis en attente tout le temps, il a été désactivé et « courses pour rattraper son retard ».

Il est très bizarre, pourquoi toucherait des événements en file d'attente alors que la vue a son interaction utilisateur désactivé?

Était-ce utile?

La solution

Il est difficile d'être sûr d'une réponse ici sans voir le code, mais voici une idée:

Si l'activité de votre réseau est synchrone, alias le blocage, il pourrait être le cas que les touches de l'utilisateur sont mis en attente avant d'avoir une chance de frapper tout de votre code. Si tel est le cas, ces touches ne seront pas envoyés dans votre chaîne répondeur jusqu'à ce que l'activité du réseau se termine, et ils avaient jamais la chance de « savoir » que vous aviez l'interaction avec ces personnes handicapées contrôles.

Voici une façon vous pouvez aider à déboguer votre situation: Ajoutez quelques déclarations de NSLog de débogage dans la couche supérieure (ce que vous appelez la vue secondaire) que leur indiquant l'activité du réseau. Assurez-vous que le châssis de la vue secondaire est assez grand pour inclure ces touches, et voir si elle enregistre les touches dès qu'ils se produisent. Sinon, je pense peut-être correct. Si oui, eh bien, vous obtenez toujours des informations utiles -. Et vous pourriez être en mesure de saisir simplement les touches à ce niveau, au lieu de leur permettre de faire la queue

Si cette supposition est correcte, le moins fix hacky que je peux penser serait rendre votre asynchrone des opérations réseau.

Si vous ne voulez pas faire cela, vous pouvez également essayer d'utiliser un NSTimer de quitter l'indicateur d'activité réseau pour une fraction de seconde après l'appel synchrone est terminé. De cette façon, votre chaîne répondeur pourrait effacer la file d'attente des touches entrantes et les ignorer si c'est le comportement souhaité.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top