Ich habe eine Lösung für dieses Problem gefunden, die noch nicht perfekt ist, aber ich hoffe, dass ich das letzte Problem, das ich habe, bald lösen werde.
Ich benutze Rubymotion und auch wenn ich Objective-C
in Ruby
übersetzen kann, bin ich nicht in der Lage, das Gegenteil zu tun, so wird meine Antwort in Ruby
sein. Fühlen Sie sich frei, meine Antwort zu bearbeiten, um den entsprechenden Objective-C
Code hinzuzufügen.
In der Delegierten von meiner NSTokenField
, habe ich die controlTextDidChange Methode von NSControl
, die aufgerufen wird, wenn ich ein Zeichen in meinem Token-Feld schreibe. In dieser Methode überprüfe ich, ob es ein Ereignis gibt, das ausgelöst wird, und wenn es der Fall ist, simuliere ich einen Klick auf Return
(gelernt von diesem anderen SO question). Und das ist es.
Hier ist mein Ruby
Code:
def controlTextDidChange(aNotification)
application = NSApplication.sharedApplication
event = application.currentEvent
if event.type == NSLeftMouseUp
e1 = CGEventCreateKeyboardEvent(nil, 0x24, true)
CGEventPost(KCGSessionEventTap, e1)
end
end
Aber wie ich Ihnen gesagt, es ist noch nicht perfekt: Mein Problem ist, dass wenn ich eine Vervollständigungsliste mit 3 Einträgen zum Beispiel einer von ihnen wird standardmäßig ausgewählt sein, sagen wir die erste. In diesem Fall funktioniert meine Lösung wie erwartet, wenn ich auf den zweiten oder dritten Eintrag klicke, aber ich muss auf den ersten Eintrag doppelklicken, damit er funktioniert.
Aber immer noch, es ist ein guter Anfang und ich hoffe, es wird helfen!
EDIT
das letzte Problem zu beheben, die ich hatte, drehte ich die Auto-Vervollständigung ab und nur den Vorschlag Feld angezeigt. Dazu habe ich diese Zeile in der tokenField:completionsForSubstring:indexOfToken:indexOfSelectedItem:
Methode:
selectedIndex[0] = -1
Haben Sie eine Lösung für Ihr Problem finden? – siekfried