Ho creato una semplice applicazione Cocoa in XCode 4.6 con un NSPanel
anziché il valore predefinito NSWindow
. Quando mi permetto alla opzione di non-Attivazione e iniziare il tutto applicazione funziona benissimo:NSPanel in modalità "Non attiva" non mostra sempre i cursori corretti
Il pannello viene visualizzato davanti a tutto il resto e quando il cursore del mouse passa sopra i bordi del pannello si trasforma da un normale freccia-cursore al cursore di ridimensionamento appropriato, in modo che l'utente sappia che può ridimensionare il pannello .
Questo funziona bene a meno che non clic su qualsiasi altra applicazione come ad esempio Safari o Finder.
Dal momento in cui una volta che io do fuoco a un'altra applicazione, posso fare clic su e posiziona il mouse sopra il mio pannello di quanto voglio, lo stile cursore non cambierà più - rimane sempre una freccia e non è possibile tornare al comportamento normale.
Il pannello rimane selezionabile e nella parte anteriore, è ancora possibile spostarlo e ridimensionarlo, ma il cursore del mouse rimane una freccia tutto il tempo. Quindi non è possibile nemmeno modificarlo manualmente utilizzando utilizzando: [[NSCursor crosshairCursor] set]
.
quindi ho bisogno di trovare un modo per creare un NSPanel
che mantiene il normale automatica-cambio-cursorstyle-quando-bilico-over-panel-bordi-comportamento anche quando si dà fuoco a un'altra applicazione.
Ho già provato ad usare un personalizzata NSPanel
di classe, dove ho sovrascritto i metodi canBecomeKeyWindow
e canBecomeMainWindow
, in modo che restituiscano SI ma anche quando faccio il mio pannello KeyWindow
e MainWindow
...
[myPanel makeKeyAndOrderFront:self];
[myPanel makeMainWindow];
... non risolve il problema del cursore.
Sarebbe bello se qualcuno mi potrebbe aiutare qui :)
PS .: l'SDK di base e la destinazione di distribuzione sono impostati a 10,8 nel mio progetto
Così ho scoperto che la descrisse il problema non ha nulla a che vedere con lo stato della finestra del pannello. Non importa se è impostato su key o main, invece il problema con il cursore (rimane sempre la freccia) è correlato allo stato di attivazione dell'applicazione.
Tutto funziona correttamente purché l'applicazione proprietaria del pannello sia attiva ma se si fa clic su un'altra applicazione la mia applicazione è disattivata e non viene nuovamente attivata - anche se si fa clic sul pannello - perché "non-activating
" - l'opzione è abilitata.
Il problema è che ho bisogno dell'opzione "non activating
" perché sto creando un'app che cattura lo stato della barra dello schermo che dovrebbe essere visualizzata e funzionare di fronte a qualsiasi altra cosa, ma senza disattivare alcuna applicazione in esecuzione.Ho potuto risolvere il problema cursore
[NSApp activateIgnoringOtherApps];
ma poi prendere uno screenshot di un video a schermo intero in esecuzione in Safari sarebbe disattivare Safari e ridurre al minimo il video, che io non voglio.
Ho lo stesso problema. Potrebbe postare se trovo qualcosa. –