Wie programm Fokus auf Horizontallist gesetzt, so dass es Schlüsselereignisse (Flex) erhalten könnte?

StackOverflow https://stackoverflow.com/questions/1625262

  •  06-07-2019
  •  | 
  •  

Frage

Bitte, sehen Sie den Code:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:creationComplete>
    <![CDATA[
        list.setFocus();
    ]]>
</mx:creationComplete>
<mx:HorizontalList id="list">
    <mx:creationComplete>
        <![CDATA[
            setFocus();
        ]]>
    </mx:creationComplete>
    <mx:focusIn>
        <![CDATA[
            trace("Received focus");
        ]]>
    </mx:focusIn>
    <mx:keyDown>
        <![CDATA[
            trace("Key down");
        ]]>
    </mx:keyDown>
    <mx:dataProvider>
        <mx:Object label="Some"/>
        <mx:Object label="Different"/>
        <mx:Object label="Stuff"/>
    </mx:dataProvider>
</mx:HorizontalList>

Wie Sie sehen, ich versuche, meine HorizontalList zu machen konzentriert, wenn die Anwendung geladen wird. Und ich tatsächlich erhalten Received focus Nachricht in der Konsole. Aber ich erwartet, dass ich in der Lage wäre Listenelemente mit Pfeiltasten zum Navigieren über nach Fokuseinstellung. Aber das ist nicht der Fall. Sie arbeiten nur nach Komponente mit der Maus klicken. Also, was mache ich falsch? Wie man Liste Fokus haben und darauf zu reagieren Tasten Pfeil?

War es hilfreich?

Lösung

Ist Ihre Anwendung in einem Browser ausgeführt wird? Sie können Fokus auf dem SWF-Objekt (via JavaScript), um gesetzt zu beginnen mit ihm interagieren, ohne zuerst das Objekt klicken.

Zum Beispiel, vorausgesetzt, Sie Flex Builder verwenden, versuchen Sie eine Zeile wie diese bis zum Ende des SCRIPT-Tages Ihrer index.template.html Datei hinzufügen:

window.onload = function()
{
    document.getElementById("${application}").focus();
};

Sie müssen möglicherweise ein wenig Gefummel tun, auf Ihre spezifische Situation abhängig, aber das ist wahrscheinlich das Problem. Einstellung Fokus auf dem Flash-Objekt explizit sollte es tun. Hoffe, es hilft!

Andere Tipps

laufe ich Ihren Code und konnte mit der Tastatur durch die Liste navigieren ohne auf der Liste klicken zuerst - aber ich hatte irgendwo auf dem Flex-App klicken, so dass sie erhält den Fokus in erster Linie. Ich denke, dass eine Einschränkung des Blitzes in der Regel - die SWF nicht Tastaturfokus erhalten, wenn Sie irgendwo klicken Sie darauf (mouseover wird nach wie vor, obwohl gefeuert werden)

.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top