2009-12-15 33 views
19

Tôi đã có một quá trình nền mà làm cho một cửa sổ trong suốt xuất hiện khi một phím nóng được nhấn:Làm thế nào để lập trình ứng dụng làm cho ca cao hoạt động

[window makeKeyAndOrderFront:nil]; 
[[content animator] setAlphaValue:1.0]; // alpha was 0.0 

... cửa sổ xuất hiện tốt & ở phía trước của khác cửa sổ (như tôi muốn nó), tuy nhiên cho đến khi tôi tự bấm vào cửa sổ bất cứ ứng dụng nào đang hoạt động khi cửa sổ xuất hiện vẫn hoạt động. Tôi đã mong đợi 'makeKeyAndOrderFront' để làm cho ứng dụng hoạt động là tốt, tuy nhiên thêm một dòng NSLog vào ứng dụng của tôiWillBecomeActive cho thấy nó không nhận được bất kỳ thông báo hoạt động nào cho đến khi nhấp chuột được thực hiện.

Có ai biết cách tôi có thể đặt ứng dụng của mình hoạt động không @ cùng lúc tôi phát hành -makeKeyAndOrderFront? Tôi cần nó hoạt động để nó có thể bắt đầu chấp nhận đầu vào bàn phím - bất kỳ hỗ trợ nào cần thiết :-)

+2

Đừng làm điều này - các ứng dụng Mac thường không ăn cắp tập trung cho lý do chính đáng. – AlBlue

+6

Nhưng trong trường hợp này, tiêu điểm được mong đợi là trong ứng dụng của mình vì người dùng đã sử dụng phím nóng. – dreamlax

Trả lời

47

Nhìn vào [[NSApplication sharedApplication] activateIgnoringOtherApps : YES];.

+2

* THANK YOU !!! * - Tôi đang kéo tóc ra ngoài thử công cụ với NSRunningApplication's -activateWithOptions, nhưng mọi thứ tôi đã cố gắng tạo ra một quả bóng ... –

9

Đối với 10,6 hoặc cao hơn

[[NSRunningApplication currentApplication] activateWithOptions:(NSApplicationActivateAllWindows | NSApplicationActivateIgnoringOtherApps)]; 
+0

nơi tốt nhất để đặt cái này? 'applicationDidFinishLaunching'? –

+0

Cảm ơn câu trả lời này. Tôi đã có một ứng dụng nhiều cửa sổ sẽ không kích hoạt chính xác trừ khi 'NSApplicationActivateAllWindows' được đặt. – thomasfuchs

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