मैं इस समस्या है, जो अभी तक सही नहीं है के लिए एक समाधान पाया, लेकिन मुझे आशा है कि मैं जल्द ही आखिरी मुद्दा मैं का समाधान होगा।
मैं rubymotion का उपयोग कर रहा हूं और यहां तक कि अगर मैं Objective-C
Ruby
में अनुवाद कर सकता हूं, तो मैं विपरीत नहीं कर पा रहा हूं इसलिए मेरा उत्तर Ruby
में होगा। संबंधित Objective-C
कोड जोड़ने के लिए मेरे उत्तर को संपादित करने के लिए स्वतंत्र महसूस करें।
मेरे NSTokenField
के प्रतिनिधि में, मैंने controlTextDidChangeNSControl
विधि का उपयोग किया जिसे किसी भी समय मैं अपने टोकन फ़ील्ड में एक वर्ण लिखता हूं। इस विधि में मैं जाँच अगर वहाँ एक NSLeftMouseUp
घटना है जो शुरू हो रहा है है, और अगर यह मामला है, मैं Return
पर एक क्लिक (यह अन्य SO question से सीखा) अनुकरण। और बस।
यहाँ मेरी Ruby
कोड है:
def controlTextDidChange(aNotification)
application = NSApplication.sharedApplication
event = application.currentEvent
if event.type == NSLeftMouseUp
e1 = CGEventCreateKeyboardEvent(nil, 0x24, true)
CGEventPost(KCGSessionEventTap, e1)
end
end
लेकिन जैसे मैंने तुमसे कहा था, यह अभी तक सही नहीं है: मेरी समस्या यह है कि अगर मैं उदाहरण के लिए 3 आइटम, उनमें से एक होगा के साथ एक पूरा होने सूची है डिफ़ॉल्ट रूप से चुना जाए, आइए पहले कहें। इस मामले में, मेरा समाधान अपेक्षित रूप से काम करेगा यदि मैं दूसरी या तीसरी वस्तु पर क्लिक करता हूं लेकिन मुझे इसे काम करने के लिए पहले आइटम को डबल क्लिक करना होगा।
लेकिन फिर भी, यह एक अच्छी शुरुआत है और मुझे आशा है कि यह मदद मिलेगी!
संपादित
पिछले मुद्दा रहा था ठीक करने के लिए, मैं स्वतः पूर्ण बंद कर दिया और केवल सुझाव पेटी का प्रदर्शन किया। ऐसा करने के लिए, मैं tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:
विधि के लिए इस लाइन कहा:
selectedIndex[0] = -1
आप अपनी समस्या का समाधान मिला? – siekfried