Evénements à  ignorer

tabliertablier Membre
17:01 modifié dans API AppKit #1
Dans une fenêtre, j'ai deux boutons. L'un ouvre le sélecteur de fichier, et l'autre lance le traitement de tout les fichiers d'un dossier. Ce traitement peut prendre plusieurs secondes ou minutes. En début du traitement je dé-valide tout les boutons (setEnabled:NO). Les clics faits sur les boutons pendant qu'ils sont dé-validés, sont pris en compte lorsque je les re-valide en fin de traitement. Je n'ai pas trouvé comment éviter cela!
Donc je pense que la bonne question à  poser est: comment vider la queue d'évènement des boutons avant de les re-valider?

Réponses

  • ThibautThibaut Membre
    17:01 modifié #2
    Le mieux est d'utiliser un NSOperationQueue pour faire le traitement et faire un test lors du clic sur le bouton. S'il y a encore une operation en cours dans le NSOperationQueue, cela ne fait rien. Sinon, on lance l'action associée.

    Et sii tu ne connais pas le fonctionnement des thread, c'est l'occasion de se lancer !
  • tabliertablier Membre
    avril 2010 modifié #3
    Ok, je vais aller voir ça.

    Rectification, j'irai voir cela mais pas tout de suite. Comme je veux interdire les actions de la souris dans une seule fenêtre, je vais utiliser  [laFenetre  setIgnoresMouseEvents:YesOrNo]
Connectez-vous ou Inscrivez-vous pour répondre.