2011-08-19 14 views
14

Penso che sia un problema di primo intervento, ma non ne sono sicuro. Sto implementando una finestra di modifica per i dati in una vista tabella. Un concetto molto simile all'interfaccia utente per la modifica delle regole di filtro in Mail.app.Il foglio del documento non risponde agli eventi della tastiera

devo una finestra di modifica che attribuisco alla mia finestra primaria con:

[NSApp beginSheet: criteriaEditPanel 
    modalForWindow: [self window] 
    modalDelegate: self 
    didEndSelector: @selector(criteriaEditDidEnd:returnCode:contextInfo:) 
     contextInfo: (void *)[criteriaList objectAtIndex: index]]; 

Viene visualizzato il pannello correttamente, dalla barra del titolo della finestra principale. Posso manipolare i controlli a comparsa sul pannello con il mouse, ma non posso modificare i campi di testo e non posso passare da un campo all'altro. Tutto il resto funziona bene. Qualche idea?

joe

+0

Ancora nessun successo su questo. Aggiunta di commenti nella speranza che la folla della notte la veda. Grazie. – Flyingdiver

+0

Esegui l'override su qualsiasi cosa abbia a che fare con il risponditore? – spudwaffle

+0

No, non che io possa pensare. Ma ho fatto un sacco di modifiche alle impostazioni del file xib che mi chiedo se ho incasinato qualcosa lì. – Flyingdiver

risposta

28

Risolto. Che ci crediate o no, è necessario avere la barra del titolo abilitata per il pannello, anche se non è mai visibile quando viene visualizzata come un foglio. Quando abilitato in IB, l'input della tastiera ha iniziato a funzionare.

@spudwaffle - nessuno degli oggetti aveva Refuse First Responder controllato.

+2

+1 Grazie per aver evidenziato UN'ALTRA stranezza di NSDocument ... –

+0

Capisco che ciò significhi che la maschera di stile della finestra del foglio (non quella del genitore) deve includere NSTitledWindowMask, o controllare la casella IB "Barra del titolo". Inoltre, ho visto questo problema in un'app non documentale, utilizzando la nuova API di foglio NSWindow (10.9). –

+0

Questo è corretto, Paul. Il pannello che utilizzi come foglio, non il genitore. – Flyingdiver