में वैश्विक फ़ाइल ड्रैग ईवेंट के लिए पंजीकरण करें जब मैं ओएस एक्स उपयोगकर्ता ओएस एक्स में किसी भी फाइल को खींच रहा हूं, न केवल मेरे ऐप में, जब मैं अधिसूचित होने की कोशिश कर रहा हूं।कोको
मेरे वर्तमान दृष्टिकोण NSEvent
पर addGlobalMonitorForEventsMatchingMask:handler:
उपयोग कर रहा था, इस प्रकार है:
[NSEvent addGlobalMonitorForEventsMatchingMask:NSLeftMouseDraggedMask handler:^(NSEvent* event) {
NSPasteboard* pb = [NSPasteboard pasteboardWithName:NSDragPboard];
NSLog(@"%@", [pb propertyListForType:NSFilenamesPboardType]);
}];
यह आंशिक रूप से काम करता है - हैंडलर बुलाया जा रहा है, जब मैं अपने डेस्कटॉप या खोजक से एक फ़ाइल खींचना शुरू करें, लेकिन यह भी कहा जाता है की जा रही है जब मैं हर दूसरे ऑपरेशन करता हूं जिसमें बाएं-माउस-ड्रैग होता है, उदाहरण के लिए एक खिड़की चलती है। मुद्दा यह है कि NSDragPboard
में अभी भी नवीनतम ड्रैग किए गए फ़ाइल यूआरएल शामिल हैं। जब मैंने फ़ाइल को छोड़ दिया और एक खिड़की चलाना शुरू किया, जिससे इन परिचालनों के बीच अंतर करना मुश्किल हो जाता है।
टीएल; डीआर - मुझे फाइल ड्रैग ऑपरेशंस सिस्टम-व्यापी में दिलचस्पी है। मुझे ड्रैग फ़ाइल के बारे में किसी भी जानकारी की आवश्यकता नहीं है, केवल वह जानकारी जो फ़ाइल ड्रैग ऑपरेशन शुरू या बंद कर दी गई है। मैं इस प्रश्न के संभावित समाधान के लिए किसी भी संकेत की सराहना करता हूं।