Come si fa a fare la Domanda finestra aperta quando l’icona del dock è cliccato?

Mi sorprende che questo non avviene in automatico, ma mi piacerebbe che la mia finestra delle applicazioni per aprire automaticamente quando il Dock si fa clic sull’icona.

Giusto per chiarire, quando ho aperto l’applicazione, la finestra si apre automaticamente, ma quando clicco croce per la finestra, ma lasciare l’Applicazione in esecuzione, la finestra non si apre quando clicco sull’icona del dock.

  • Questo accade automaticamente. Puoi essere più specifico?
InformationsquelleAutor Joshua | 2009-05-02

 

6 Replies
  1. 65

    Implementare - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag nella tua app delegato. Controllare la documentazione per i dettagli il valore di ritorno.

    Documento di base applicazioni e non di documento basato applicazioni si comportano in modo leggermente diverso. Se non ci sono finestre aperte quando il dock l’icona di un documento basato app viene cliccato, quindi, viene creato un nuovo documento. Se non ci sono finestre aperte quando l’icona del dock di un non-documenti a base dell’app è scattato quindi non farà nulla.

    • come circa il caso quando ho due finestre aperte, la finestra principale e la finestra figlio. La finestra figlio è un fuoco. Ho bisogno di impostare la finestra principale di concentrato dopo aver fatto clic sull’icona del dock.
  2. 12
    - (BOOL)applicationShouldHandleReopen:(NSApplication *)theApplication hasVisibleWindows:(BOOL)flag
    {
        if (flag) {
            return NO;
        }
        else
        {
           [YourWindow makeKeyAndOrderFront:self];//Window that you want open while click on dock app icon
            return YES;
        }
    }
  3. 10

    Questo è quello che sto facendo per ottenere la finestra principale di un non-documenti a base di app a schermo una volta che è stato chiuso. So che questo potrebbe non essere il modo giusto per farlo, ma funziona per me finora.

    Implementata in AppDelegate, finestra è definita come variabile di istanza dell’oggetto stesso.

    - (BOOL) applicationShouldOpenUntitledFile:(NSApplication *)sender
    {
        [window makeKeyAndOrderFront:self];
        return NO;
    }

    Se qualcuno ha una soluzione migliore, si prega di rispondere. Grazie!

    • Stavo cercando di capire questo (come per visualizzare un’altra finestra di un documento basato app) e questo ha funzionato perfettamente!
  4. 4

    Un documento, a seconda dell’applicazione si aprirà automaticamente un nuovo documento senza titolo quando l’app si attiva, quindi sto supponendo che si sta facendo riferimento a un non-documento basato app.

    Implementare il applicationDidBecomeActive: metodo nell’applicazione delegato e di aprire e mostrare la finestra.

    Edit:

    Alcune informazioni su Delegati.

    Alcune informazioni su L’apertura e la Chiusura di Windows e il NSWindow API

    • Non riesco a capire come posso implementare il applicationDidBecomeActive: metodo. Mi potete dare un codice snipped/esempio/
    • Dove si trova la casella di controllo per nascondere a carico di IB?
    • Mi dispiace, ma è l’esatto opposto. Se si seleziona un ispettore per la Finestra in punta di file, assicurarsi che il “Visibile al momento del Lancio” è selezionata.
    • Controllare il primo post, Si apre bene quando si apre in primo luogo, ma quando si sceglie la croce, ma non chiudere l’Applicazione e quindi fare clic sull’icona nel dock, la finestra non si apre automaticamente.
    • Come è che andando per aiutare? Mi puoi dire come fare la finestra si apre di nuovo dopo che è stato chiuso (non l’applicazione, la finestra facendo clic sull’icona del dock?
    • Funziona se si nasconde la finestra, ma non se si chiude la finestra. Che credo sia perché il Cacao è di rilasciare la finestra si chiude. Ma ovvio, la casella di controllo IB non aiuta. Sto facendo ulteriori ricerche.

  5. 4

    Come altri hanno rilevato, utilizzando applicationShouldHandleReopen metodo per riaprire le finestre chiuse non documento app è il modo giusto. L’unica modifica che voglio aggiungere è il modo più flessibile per controllare che la finestra deve essere visualizzato nuovamente, scorrendo la NSApplication‘s elenco di visibile e invisibile .windows e il controllo per la finestra.

    func applicationShouldHandleReopen(_ sender: NSApplication, hasVisibleWindows flag: Bool) -> Bool {
    
        if flag == false {
    
            for window in sender.windows {
    
                if (window.delegate?.isKind(of: WelcomeWindowController.self)) == true {
                    window.makeKeyAndOrderFront(self)
                }
            }
        }
    
        return true
    }

    Appendice

    a) Se la finestra era nascosto allora verrà mostrato automaticamente quando l’utente farà clic sul app icona del Dock, quindi non c’è bisogno di implementare applicationShouldHandleReopen metodo.

    b) Controllate “Rilascio quando è chiuso” opzione non influisce in alcun modo il suddetto comportamento.

  6. 2

    Soluzioni per aggiungere accettato risposta:

    Con il accettato di rispondere alla riapertura della finestra non reagire agli eventi del mouse più.

    Quando si utilizza il accettato la risposta è inoltre necessario assicurarsi di deselezionare l’opzione “uscita, quando chiuso” negli Attributi di Ispezione della finestra in IB. Questo risolve il che non risponde finestra problema.

Lascia un commento