1 votes

Comment activer l'apparition automatique d'une fenêtre modale lorsque le programme requiert votre attention ?

Puis-je faire en sorte que les fenêtres modales apparaissent en premier plan ? Je veux voir les alertes et les fenêtres modales des applications en arrière-plan.

Je suis nouveau dans le monde du Mac. J'ai un petit utilitaire pour le Mac qui affiche une fenêtre modale après un certain temps. En fait, il imprime des informations très utiles pour moi.

Je m'attends à ce que cette fenêtre modale apparaisse pendant que je travaille sur d'autres choses (surf sur Internet, lecture d'emails), mais au lieu de voir la fenêtre modale, l'application fait rebondir son icône dans le Dock, ce qui signifie évidemment que mon logiciel a besoin de mon attention.

La même chose se produit avec iTunes, les communicateurs, Safari, etc.

0 votes

Comme il s'agit d'une question relative au développement de logiciels, vous devriez la poser sur le site suivant StackExchange . Ce site est destiné aux clients d'Apple plutôt qu'aux développeurs. En attendant des réponses plus détaillées sur StackExchange, vous pouvez consulter les pages suivantes NSUserNotification .

0 votes

@GrahamMiln Je n'ai pas accès au code source d'iTunes ou de Safari pour contrôler son comportement. Il s'agit d'un problème plus général concernant la présentation des vues modales sous osx.

0 votes

Pourriez-vous reformuler votre question ? Vous interrogez-vous sur le comportement de Safari et d'autres applications - ou votre question concerne-t-elle votre propre application ? Pour votre propre application, utilisez NSUserNotification.

2voto

Oskar Points 1242

Les boîtes de dialogue modales ne sont pas quelque chose dont vous pouvez garantir l'affichage. Le système d'exploitation permet aux utilisateurs d'utiliser plusieurs écrans, plusieurs bureaux virtuels, d'affecter des applications à tous les écrans, à aucun écran ou à un écran spécifique.

Centre de notification est l'outil correct pour envoyer une notification à un utilisateur, donc je reconcevrais votre script/outil/application pour faire usage du centre de notification.

De plus, sans voir un bout de ce que vous avez déjà, il est vraiment difficile de vous suggérer comment mettre en œuvre un changement. Comme sur Stack Overflow - si vous avez un problème avec un outil ou un script ici, montrez votre travail et posez une question de suivi pour expliquer exactement ce que vous souhaitez faire et ce que vous avez déjà fait.

Voici un petit script Python que vous pouvez essayer : un petit "script Python que j'ai adapté à partir d'une brève recherche de SO :

import Foundation
import objc
import AppKit
import sys

note = objc.lookUpClass('NSUserNotification')
center = objc.lookUpClass('NSUserNotificationCenter')

def notify(title, subtitle, info_text, delay=0, sound=False, userInfo={}):
    notification = note.alloc().init()
    notification.setTitle_(title)
    notification.setSubtitle_(subtitle)
    notification.setInformativeText_(info_text)
    notification.setUserInfo_(userInfo)
    if sound:
        notification.setSoundName_("NSUserNotificationDefaultSoundName")
    notification.setDeliveryDate_(Foundation.NSDate.dateWithTimeInterval_sinceDate_(delay, Foundation.NSDate.date()))
    center.defaultUserNotificationCenter().scheduleNotification_(notification)

notify("AskDifferent", "you can program now", "Here we go... ", sound=True)
sys.stdout.write("Notification sent...\n")

Il fonctionne sur El Capitan sans nécessiter de fichiers ou de téléchargements supplémentaires. Encore une fois, il y a des dizaines d'options et de langues, donc c'est plus une question de ce que vous voulez faire à long terme et si vous êtes à l'aise avec la modification des scripts.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X