2011-10-12 23 views
8

NSStatusItem numaralı telefonu kullanan bir uygulamam var. Küçük ekranlarda, durum çubuğunda fazla yer yoktur. Bir kullanıcı çok sayıda menü öğesinin bulunduğu bir uygulamaya geçtiğinde durum öğem gizlenir. Bu konuda bildirim almanın bir yolu var mı? NSStatusItem gizlendiğinde durumu bildirme

şimdiye kadar çalıştığım şey:

  • herhangi NSNotification ateş seçeneği işaretlendiğinde: statusView görünümü hiyerarşi kaldırılır olursa
  • ben kontrol: Hayır
  • Ben isHiddenOrHasHiddenAncestor kontrol: Hayır

Durum öğesini oluşturmak için kullandığım kod.

self.statusItem = [[NSStatusBar systemStatusBar] statusItemWithLength:NSVariableStatusItemLength]; 
MyStatusView *maView = [[[MyStatusView alloc] initWithFrame:CGRectMake(0, 0, 50, 22)] autorelease]; 
[statusItem setTitle:@"Ma Status Item"]; 
[statusItem setView:maView]; 
+0

view.center özelliğinin ekrandan çıkarken değişip değişmediğini test edebilir misiniz? Bir tür geri arama kurmak için merkez mülküne KVO bildirimi ekleyebiliyor olabilirsiniz, ancak bunun bir statusItem için çalışıp çalışmadığını bilmiyorum. – Suz

+0

Ayrıca, pencereye göre sınırları günlüğe kaydeden bir zamanlayıcı var. Değişmiyor ... Görünüşe göre maView kendi penceresinde (NSWindow> NSNextStepFrame> maView). Ekrandan çıkarılıp çıkarılmadığını deneyip deneyeceğim. – stigi

+0

Pencere sınırları da hala ekranda. Pencere başka bir şey tarafından kaplanmış olabilir. Bunu nasıl kontrol edeceğinizi bilmiyorum .. – stigi

cevap

1

Bu durum öğesi gizli olduğunda, onun penceresi arka içine taşınacak fark etmen oldukça zeki.

Şimdi aradığınız bildirim geçerli: NSWindowDidResignKeyNotification (veya NSWindowDidResignMainNotification Başvurunuzun bağlamına göre) bir anahtar pencere ve ana penceresinde arasındaki fark hakkında net bir açıklama için

, this bakınız .

+0

Bu cevap çalışmıyor, -1, bir NSStatusItem gizlendiğinde bu tür bir bildirim gönderilmiyor – Vervious

+0

-1: Ikinci @Vervious - bu cevap işe yaramazdan daha kötü, zamanımı harcamak için zamanımı harcamama neden oldu iş. – ArtOfWarfare