Cómo activar la ventana modal cuando el programa necesita su atención

1

¿Puedo hacer que las ventanas modales aparezcan al frente? Quiero ver alertas y modales de aplicaciones en segundo plano.

Soy nuevo en el mundo Mac. Tengo una pequeña utilidad para Mac que muestra una ventana modal después de algún tiempo. Básicamente, imprime información muy útil para mí.

Estoy esperando que aparezca esta ventana modal mientras estoy trabajando en diferentes cosas (navegando en internet, leyendo correos electrónicos), pero en lugar de ver la ventana modal, la aplicación rebota molestamente su icono en el Dock; obvioulsy lo que significa que mi software necesita mi atención.

Lo mismo sucede con iTunes, comunicadores, Safari, etc.

    
pregunta joe.kovalski 08.11.2015 - 15:56

1 respuesta

2

Los diálogos modales no son algo que puedas garantizar que se muestre. El sistema operativo permite a los usuarios utilizar múltiples pantallas, múltiples escritorios virtuales, aplicaciones de pin en todas las pantallas, no pantallas o una pantalla específica.

Centro de notificaciones es la herramienta correcta para enviar un aviso a un usuario, por lo que rediseñaría su script / herramienta / aplicación para hacer uso del centro de notificaciones.

Además, sin ver un trozo desnudo de lo que ya tiene, es muy difícil sugerirle cómo implementar un cambio. Al igual que en el Desbordamiento de pila: si tiene un problema con una herramienta o un script aquí, muestre su trabajo y haga una pregunta de seguimiento para explicar exactamente lo que desea que suceda y lo que tiene hasta ahora.

Aquí hay un pequeño script de python que puedes probar: un pequeño "script" de python que he adaptado de una breve búsqueda 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")

Funciona en El Capitán sin necesidad de archivos adicionales o descargas de afaik. Una vez más, hay docenas de opciones e idiomas, por lo que se trata más de lo que quieres hacer a largo plazo y si te sientes cómodo modificando los scripts.

    
respondido por el bmike 09.11.2015 - 20:48

Lea otras preguntas en las etiquetas