Come attivare la finestra modale che appare automaticamente quando il programma richiede la tua attenzione


1

Posso far apparire le finestre modali in primo piano? Voglio vedere avvisi e modali dalle applicazioni in background.

Sono nuovo nel mondo Mac. Ho una piccola utility per Mac che mostra una finestra modale dopo qualche tempo. Fondamentalmente, stampa alcune informazioni molto utili per me.

Mi aspetto che questa finestra modale appaia mentre sto lavorando su cose diverse (navigare su internet, leggere e-mail), ma invece di vedere la finestra modale l'applicazione rimbalza fastidiosamente la sua icona nel Dock; obvioulsy che significa che il mio software ha bisogno della mia attenzione.

La stessa cosa accade con iTunes, i comunicatori, Safari, ecc.


Poiché si tratta di una domanda di sviluppo software, è necessario porre una domanda su StackExchange . Questo sito è destinato ai clienti Apple anziché agli sviluppatori. Mentre aspetti risposte più dettagliate su StackExchange, guarda NSUserNotification .
Graham Miln,

@GrahamMiln Non ho accesso al codice sorgente di iTunes o Safari per controllarne il comportamento. Questo è un problema più generale relativo alla presentazione di viste modali in osx.
joe.kovalski,

Per favore, potresti riformulare la tua domanda. Stai chiedendo informazioni sul comportamento di Safari e di altre applicazioni o hai domande sulla tua applicazione? Per la propria applicazione, utilizzare NSUserNotification.
Graham Miln,

@GrahamMiln È generale. Voglio solo che tutte le app mi avvisino immediatamente quando hanno bisogno della mia attenzione (non attraverso l'icona che rimbalza). La domanda non è correlata allo sviluppo del software.
joe.kovalski,

Ho riformulato la tua domanda e l'ho nominata per la riapertura.
Graham Miln,

Risposte:


2

Le finestre di dialogo modali non possono essere mostrate. Il sistema operativo consente agli utenti di utilizzare più display, più desktop virtuali, app di pin su tutti i display, nessun display o un display specifico.

Il centro notifiche è lo strumento corretto per inviare un avviso a un utente, quindi riprogetterei il tuo script / strumento / app per utilizzare il centro notifiche.

Inoltre, senza vedere alcuni stub di ciò che hai già, è davvero difficile suggerirti come implementare un cambiamento. Proprio come su Stack Overflow - se hai un problema con uno strumento o uno script qui, mostra il tuo lavoro e fai una domanda di seguito per spiegare esattamente cosa desideri che accada e cosa hai finora.

Ecco un piccolo script Python che potresti provare: un piccolo "script" Python che mi sono adattato da una breve ricerca di 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")

Funziona su El Capitan senza bisogno di file aggiuntivi o download afaik. Ancora una volta, ci sono dozzine di opzioni e lingue, quindi è più su ciò che vuoi fare a lungo termine e se ti senti a tuo agio con la modifica degli script.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.