iTunes và Reeder (và tôi chắc chắn nhiều ứng dụng khác) có khả năng sửa đổi hành vi khởi động bất cứ khi nào chúng được khởi chạy trong khi giữ phím ⌥ (tùy chọn). Tôi đã thử xem xét các phương pháp NSApplicationDelegate
, nhưng không có cách nào thêm bất kỳ loại gợi ý nào vào những gì tôi đang tìm kiếm. Chức năng này đạt được như thế nào?Bí quyết đằng sau "ứng dụng khởi chạy giữ [phím bổ trợ]" là gì?
Trả lời
Trong applicationDidFinishLaunching đại biểu ứng dụng của bạn: Phương pháp
NSUInteger flags = ([NSEvent modifierFlags] & NSDeviceIndependentModifierFlagsMask);
BOOL isOptionPressed = (flags == NSAlternateKeyMask);
(Edited để phù hợp tuyệt vời câu trả lời Declaring and checking/comparing (bitmask-)enums in Objective-C Trước đây này là BOOL isOptionPressed = (0 != (flags & NSAlternateKeyMask));
Nhưng việc kiểm tra không là không cần thiết để kiểm tra xem một mặt nạ bit cho bình đẳng, trừ trường hợp Mặt nạ bit tự đại diện cho tất cả các số không trong nhị phân. Liên kết được cung cấp cung cấp chi tiết hơn. )
nhu cầu trả lời của Francis McGrew chứng minh trước khi nó có thể hoạt động, nhưng tôi vẫn không thấy giải pháp nào thông qua tuyến đường đó. Câu trả lời như đã nêu không biên dịch. Một con trỏ NSEvent thực sự là cần thiết cho modifierFlags, mà không phải là một phương thức lớp như câu trả lời sẽ gợi ý.
Người ta hy vọng rằng sự kiện cần thiết có thể thu được bằng những điều sau đây.
NSEvent *event = [NSApp currentEvent];
Tuy nhiên khi được gọi từ applicationDidFinishKhả thực sự kiện kết quả là không. Ít nhất điều này là đúng trong thử nghiệm của tôi trên Snow Leopard.
applicationDidFinishLaunching có đối số NSNotification nhưng tôi không biết cách sử dụng nó.
Tôi tìm thấy một câu hỏi tương tự trên cocobuilder.com từ năm 2007 và câu trả lời về cơ bản là gọi hàm cacbon GetCurrentKeyModifiers và chuyển đổi cờ carbon thành dạng ca cao.
Xem http://www.cocoabuilder.com/archive/cocoa/176882-detecting-modifier-keys-at-launch.html
Bạn đã nói rất nhiều nhưng không có bất kỳ giải pháp thực tế hoặc thậm chí tiềm năng nào, hãy thử và trả lời trực tiếp câu hỏi trong tương lai – shenku
+ (NSEventModifierFlags) công cụ sửa đổiFlags NS_AVAILABLE_MAC (10_6); là một phương thức lớp không cần cho một cá thể –
- 1. Phép thuật đằng sau Lightstreamer là gì?
- 2. Khái niệm đằng sau R.java là gì?
- 3. Bí quyết showS trong Haskell là gì?
- 4. Những gì (tf) là những bí mật đằng sau cấp phát bộ nhớ PDF (CGPDFDocumentRef)
- 5. Phép thuật đằng sau Escape (\) là gì
- 6. Bí quyết gỡ lỗi yêu thích của bạn là gì?
- 7. Bí quyết tạo giao diện người dùng WPF đáp ứng khi điền nhiều ListBox là gì?
- 8. Khái niệm chung đằng sau XSS là gì?
- 9. Giữ bí mật phím SECRET - trong ứng dụng Android .. bất kỳ ý tưởng
- 10. Ứng dụng chạy sau hình ảnh khởi động
- 11. "Bí quyết" để viết một Quine là gì?
- 12. ANDROID: Ý tưởng chính đằng sau việc sử dụng strings.xml là gì?
- 13. Khái niệm cơ bản đằng sau WaitHandle là gì?
- 14. Công nghệ đằng sau Windows Azure REST Api là gì?
- 15. Logic đằng sau thuật toán phân chia Fourier là gì?
- 16. Lịch sử đằng sau lớp loại Functor là gì?
- 17. Toán học đằng sau Bánh xe màu là gì
- 18. Quy trình Erlang đằng sau hậu trường là gì?
- 19. Lý do đằng sau cbegin/cend là gì?
- 20. Git Bash: Khởi chạy Ứng dụng qua Bí danh mà không cần treo Bash (WIndows)
- 21. Làm cách nào để giữ bí mật ứng dụng?
- 22. Tự động khởi chạy ứng dụng Android sau khi tải ứng dụng lên điện thoại?
- 23. Chạy ứng dụng khi khởi động
- 24. Mã đằng sau cho datagridtemplatecolumn là gì và cách sử dụng nó?
- 25. Khởi chạy ứng dụng trong heroku? Procfile là gì? 'web:' lệnh?
- 26. Khởi chạy ứng dụng từ gói ứng dụng
- 27. Cách giữ fsi.exe mở sau khi chạy
- 28. Khởi chạy ứng dụng với URL
- 29. Giữ cho bộ thu phát sóng chạy sau khi ứng dụng được đóng
- 30. khởi chạy ứng dụng, chụp stdout và stderr bằng C++
Vui lòng tham khảo tuyệt vời http://stackoverflow.com/questions/16166895/declaring-and-checking-comparing-bitmask-enums-in-objective-c – uchuugaka