Flex Alert-Steuerelement: das Aktivieren der "default" - Taste auf enter/Leertaste-drücken
Egal was ich versuche, ich kann nicht scheinen, um das Feuer das click-Ereignis auf die Schaltfläche "Standard" in einer Alert-Steuerelement in ein Flex-3.4-Anwendung.
Alert.show(
'Are you sure you want to delete the selected link?',
'Confirm Delete',
Alert.YES | Alert.CANCEL,
null,
confirmDelete,
null,
Alert.YES
);
Im obigen code-Beispiel, das Letzte argument: Alert.YES
ist die Angabe, dass der "default" - option (aus dem bit-Liste in der 3. argument) wird die Schaltfläche "ja". In der Theorie, und basiert auf meine Erfahrung bei der Entwicklung von Windows-Anwendungen, "Standard-Taste" bedeutet, dass das schlagen der enter-Taste (oder manchmal die Leertaste), löst das click-Ereignis für diese Schaltfläche.
Wenn es darauf ankommt, die betreffende Warnmeldung ist modal.
Kann ich sehen, dass der button gestaltet ist als der Standard: es wird ein bisschen ein halo oder einen zusätzlichen Rahmen, wenn im Vergleich zu den Abbrechen-button oder wenn Sie im Vergleich zu sich selbst, wenn die übergabe von null als letztes argument.
Jedoch, schlagen die enter und space Tasten scheinen keine Auswirkungen haben. Mache ich etwas falsch, oder es fehlen einige entscheidende Schritt, um diese Funktionalität zu arbeiten?
Update 2010-02-17:
Basierend auf meinen 2. Kommentar auf @rhtx Antwort:
Ok, habe endlich um zu versuchen, diese. Da die Alert-Klasse mit vielen statischen Methoden, die ich im wesentlichen nur kopiert der Alarm-und AlertForm Klassen in meinem Projekt (und es wurden einige relative Pfade für includes), und was ich am Ende mit war ein hässlicher alert-box, die funktioniert (oder nicht, je nach Perspektive) auf die gleiche Weise wie den Vanille-Alert-Klasse. Ich habe allerdings feststellen, dass, wenn Sie auf die REGISTERKARTE Schwerpunkt wird die alert-buttons, an welcher Stelle durch das drücken von Escape/Enter die gewünschte Wirkung haben... Also wie kann ich die beseitigen die Notwendigkeit, TAB zu drücken?
Ich habe versucht ein paar mehr Dinge und haben nicht überall zu bekommen.
Habe ich versucht fälscht einen TAB-Tastendruck-nach dem öffnen der alert (sowohl mit KEY_DOWN-und KEY_UP-Ereignis-Typen):
var a:Alert = Alert.show(msg, title, Alert.YES | Alert.CANCEL, null, fnCb);
var tabEvent:KeyboardEvent = new KeyboardEvent(
KeyboardEvent.KEY_DOWN,
true,
false,
0,
Keyboard.TAB
);
a.dispatchEvent(tabEvent);
Fand ich auch in diesem blog-post und versucht, dies zu tun zu konzentrieren, die alertForm
:
var a:Alert = Alert.show(msg, title, Alert.YES | Alert.CANCEL, null, fnCb);
a.mx_internal::alertForm.setFocus();
Weder dieser warf Fehler, aber weder produziert das gewünschte Ergebnis.
Diese Warnung wird ein Bestätigungs-Dialogfeld für eine delete-Aktion gestartet, um einen Datensatz-Auswahl und klicken Sie auf die Schaltfläche; der Anwender muss also definitiv irgendwo geklickt in der Anwendung, bevor die Warnung angezeigt wird. Für was es Wert ist, wird der Datensatz ausgewählt wird, wird ein Element im TileList-Steuerelement mit einem benutzerdefinierten ItemRenderer.
InformationsquelleAutor Adam Tuttle | 2009-12-17
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich würde dieses Konzept durch die Verlängerung der Alert-Klasse um Funktionalität, die überwacht, keyUp-Ereignisse von der Enter-und Space-Tasten.
In der Methode createChildren Ihrer Unterklasse:
Ich habe einige Probleme mit meinem set-up an diesem morgen und kann nicht in die Alert-Klasse und bieten Informationen, wie man "Auslösen die Warnung.JA Funktionalität", aber ich werde versuchen, nach ein paar mehr dazu später. Hoffe, dass dies etwas hilft.
Auch - ich bin mir nicht 100% - aber ich denke, Sie müssen manuell entfernen Sie den Ereignis-Listener aus, wenn die Alert-popup wird entfernt.
Aaand... können Sie nicht brauchen die beiden die Zuhörer. Kann nicht testen Sie jetzt sicher zu stellen.
UPDATE: -----------------
Nach ein wenig mehr suchen, vielleicht der beste Weg zu gehen über diese ist die Verlängerung der AlertForm Klasse (die verwaltet die Alarm - Tasten), und dann erweitern Sie die Alert-Klasse, die erweiterten AlertForm Klasse.
Den AlertForm Klasse hat eine keyDownHandler Methode, die es definiert, wie diese:
Können Sie sehen, dass es ist die Einstellung der 'schließen' - Verhalten in Reaktion auf das drücken der Escape-Taste. Fügen Sie ein wenig Logik, basierend auf der code in der oben 'keyUpListener' - Funktion, um einen Anruf zu tätigen, um die AlertForm ist removeAlert-Methode auf, wobei in den entsprechenden String-Wert für die Schaltfläche "ja".
Referenz, die removeAlert Methode sieht wie folgt aus:
Ok, habe endlich um zu versuchen, diese. Da die Alert-Klasse mit vielen statischen Methoden, die ich im wesentlichen nur kopiert der Alarm-und AlertForm Klassen in meinem Projekt (und es wurden einige relative Pfade für includes), und was ich am Ende mit war ein hässlicher alert-box, die funktioniert (oder nicht, je nach Perspektive) auf die gleiche Weise wie den Vanille-Alert-Klasse. Ich habe allerdings feststellen, dass, wenn Sie auf die REGISTERKARTE Schwerpunkt wird die alert-buttons, an welcher Stelle durch das drücken von Escape/Enter die gewünschte Wirkung haben... Also wie kann ich die beseitigen die Notwendigkeit, TAB zu drücken?
InformationsquelleAutor Ross Henderson
Lief ich in einer ähnlichen situation. Was mich aus war es:
(1) Festlegung der Standard-Schaltfläche in
Alert.show()
, (2) mit einemcallLater()
, und (3) die Einstellung der Schärfe manuell auf die default-Schaltfläche.Z.B. mit Alert.KÜNDIGEN, als die vorgesehene Standard-Schaltfläche (ändern können, zu warnen.JA, wenn nötig):
Dadurch können die Escape-und Enter-Tasten handeln, als ob der Benutzer auf die Standard-Schaltfläche mit der Maus.
InformationsquelleAutor ggkmath