2013-01-12 31 views
5

Tôi muốn thực hiện như sau:
khi tôi nhấp vào mục thanh trạng thái (NSStatusItem) Tôi muốn làm nổi bật nó (không có menu) vô thời hạn và khi ứng dụng mất tiêu điểm tôi muốn dừng làm nổi bật nó.

Có cách nào để thực hiện việc này không? Tôi không thể tìm thấy nó, tbh.Có cách nào để đánh dấu mục thanh trạng thái theo chương trình không?

+2

Nếu tôi thấy một ứng dụng làm điều này, tôi nghĩ rằng nó đã bị treo, hoặc ít nhất là không sử dụng vòng lặp sự kiện tiêu chuẩn, ở giữa nổi bật và ánh sáng mờ. Nếu bạn muốn cho biết cửa sổ của bạn hiển thị, bạn nên thay đổi biểu tượng của mục. –

Trả lời

2

Bạn có thể làm điều này với chế độ xem tùy chỉnh sends the status item a drawStatusBarBackgroundInRect:withHighlight: message. Tôi không nghi ngờ có cách nào để thực hiện nó mà không có chế độ xem tùy chỉnh, vì, như tôi đã đề cập trong nhận xét của tôi về câu hỏi, việc giữ mục được đánh dấu khi người dùng không có con chuột ở trên trông có vẻ không tốt. Tôi có thể làm như vậy trong bài viết.

+1

điều là: Tôi có một NSWindow (không có cửa sổ bật lên) sẽ xuất hiện ngay bên dưới mục thanh trạng thái (khi được nhấp). Vì vậy, những gì tôi muốn làm là bắt chước hành vi của NSMenu: tôi nhấp vào thanh trạng thái, cửa sổ được hiển thị và mục được đánh dấu, khi ứng dụng mất tiêu điểm cửa sổ biến mất và mục sẽ chuyển sang trạng thái bình thường. –

+0

@PedroVieira: Âm thanh hợp lý. Nếu tôi đã làm điều đó, tôi sẽ thực hiện một cái nhìn tùy chỉnh như tôi đã mô tả trong câu trả lời của tôi. –

+0

Pedro, tôi đang đối mặt chính xác cùng một vấn đề ngay bây giờ. Bạn có muốn chia sẻ cách bạn đã thực hiện giải pháp của Peter không? Chúc mừng. –

2

Câu hỏi cũ, nhưng tôi nghĩ rằng nó đáng để thêm câu trả lời thay thế này.

này sẽ không tự động unhighlight khi ứng dụng mất tập trung, nhưng điều này cho phép bạn làm nổi bật mà không cần sử dụng một giao diện tùy chỉnh (tùy theo từng other answer đòi hỏi):

NSStatusItem *statusItem = [self getStatusItem]; 
[statusItem.button setHighlighted:YES]; 

Bạn có thể unhighlight nó bằng tay bằng cách sử dụng cùng phương thức:

[statusItem.button setHighlighted:NO]; 

Lưu ý Tôi nhận được câu trả lời này từ câu hỏi tương tự here.

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