Pour un projet multiplate-forme avec beaucoup de code hérité, mon application Cocoa utilise une seule NSWindow avec un NSView personnalisé qui capture tous les événements de la souris et dessine tous les détails graphiques de l'application.CFRunLoopRunInMode gèle récursivement la fenêtre principale
J'ai besoin de mettre en œuvre un comportement modal local et donc j'utiliser à l'intérieur du fil conducteur:
CFRunLoopRunInMode (kCFRunLoopDefaultMode, 0,01, false);
dans une boucle locale. La fonction revient après 0,01 seconde comme prévu avec une valeur de kCFRunLoopRunTimedOut. Toutefois, les événements de la souris ne sont plus reçus par le NSView personnalisé pendant cette période et mon application semble donc figée (avec le curseur de la souris en couleur qui tourne).
Les événements de minuterie arrivent toujours au NSView personnalisé, mais pas les événements de souris.
Apple spécifie que cette fonction peut être appelée récursivement. Y at-il autre chose que je devrais faire pour que le NSView reçoive toujours les entrées de la souris de l'utilisateur?
Placez un point d'arrêt sur la ligne qui appelle 'CFRunLoopRunInMode'. Lorsque le point d'arrêt est atteint, copiez la trace de la pile. Modifiez votre question et collez-la dans la trace de la pile. –