2011-10-12 28 views
8

Tôi có một ứng dụng sử dụng số NSStatusItem. Trên màn hình nhỏ không có nhiều không gian trên thanh trạng thái. Khi người dùng chuyển sang ứng dụng có nhiều mục menu, mục trạng thái của tôi sẽ bị ẩn. Có cách nào để nhận thông báo về điều này không?Được áp dụng khi NSStatusItem bị ẩn

gì tôi đã cố gắng cho đến nay:

  • Tôi đã kiểm tra nếu có NSNotification là bắn: Không
  • Tôi đã kiểm tra nếu statusView được lấy ra từ hệ thống phân cấp view: Không
  • Tôi đã kiểm tra isHiddenOrHasHiddenAncestor: Không

Đây là mã tôi sử dụng để tạo mục trạng thái.

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

bạn có thể kiểm tra xem thuộc tính view.center có thay đổi khi di chuyển khỏi màn hình không? Bạn có thể thêm thông báo KVO vào thuộc tính trung tâm để thiết lập một loại gọi lại, nhưng tôi không biết liệu điều đó có hiệu quả với một statusItem hay không. – Suz

+0

Tôi cũng có bộ hẹn giờ chạy ghi nhật ký liên quan đến cửa sổ. Không thay đổi ... Có vẻ như maView nằm trong cửa sổ riêng của nó (NSWindow> NSNextStepFrame> maView). Sẽ thử và xem nếu điều này được di chuyển ra khỏi màn hình. – stigi

+0

Giới hạn cửa sổ cũng vẫn còn trên màn hình. Cửa sổ có thể bị che phủ bởi một thứ khác. Không biết làm thế nào để kiểm tra này mặc dù .. – stigi

Trả lời

1

Thật thông minh khi bạn nhận ra rằng khi mục trạng thái bị ẩn, cửa sổ của nó sẽ được chuyển sang nền.

Bây giờ thông báo bạn đang tìm kiếm là: NSWindowDidResignKeyNotification (hoặc NSWindowDidResignMainNotification tùy thuộc vào bối cảnh của ứng dụng của bạn)

Đối với một lời giải thích rõ ràng về sự khác biệt giữa một cửa sổ chính và cửa sổ chính, xem this .

+0

Câu trả lời này không hoạt động, -1, không có thông báo nào được gửi khi một NSStatusItem bị ẩn – Vervious

+0

-1: Tôi thứ hai @Vervious - câu trả lời này tệ hơn vô dụng, nó khiến tôi lãng phí thời gian của mình công việc. – ArtOfWarfare

Các vấn đề liên quan