Flex TextInput не запускает событие FocusIn, когда редактирование отключено - PullRequest
0 голосов
/ 14 декабря 2011

Я пытался использовать элемент управления Callout во Flex 4.6 для использования в мобильном приложении вместо комбо. Сценарий состоит в том, что у вас есть TextInput, который предлагает пользователю «Выбрать ...», и когда вы касаетесь его (iPad), он получает фокус и заполняется выноска, чтобы вы могли выбирать из списка.

Это прекрасно работает при запуске на Mac, но при развертывании на iPad событие focusIn, похоже, срабатывает только при включенном редактировании элемента управления TextInput. Это побеждает цель, поскольку всплывающая программная клавиатура и элемент управления доступны для редактирования, когда я действительно хочу, чтобы он был выбран из списка.

Код для элемента управления TextInput:

<s:TextInput id="txtLocation" x="171" y="149" 
            enabled="false" editable="false" 
            height="38" fontSize="16" 
            prompt="Select ..." 
            focusEnabled="true"
            focusIn="depotCallout.open(this.txtLocation,true)"/>

Этот код также находится в примере приложения Холли Шински, демонстрирующего, как использовать выноску. Любые идеи будут оценены.

1 Ответ

1 голос
/ 06 мая 2012

Хорошо, я был немного самоуверенным, не будучи профессиональным программистом, но я нашел ответ.

        <?xml version="1.0" encoding="utf-8"?>
    <!-- mobile_keyboard/views/UseNextLikeTab.mxml -->
    <s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
            xmlns:s="library://ns.adobe.com/flex/spark" title="Change Focus">
        <fx:Declarations>
            <!-- Place non-visual elements (e.g., services, value objects) here -->
        </fx:Declarations>

        <s:layout>
            <s:VerticalLayout paddingTop="10" paddingLeft="10" paddingRight="10"/>
        </s:layout>

        <fx:Script>
            <![CDATA[
                private function changeField(ti:TextInput):void {
                    // Before changing focus to a new control, set the stage's focus to null:
                    stage.focus = null;

                    // Set focus on the TextInput that was passed in:
                    ti.setFocus();
                }
            ]]>
        </fx:Script>

        <s:HGroup>
            <s:Label text="1:" paddingTop="15"/>
            <s:TextInput id="ti1" prompt="First Name"
                         width="80%"
                         returnKeyLabel="next" 
                         enter="changeField(ti2)"/>     
        </s:HGroup>
        <s:HGroup>
            <s:Label text="2:" paddingTop="15"/>
            <s:TextInput id="ti2" prompt="Middle Initial" 
                         width="80%"
                         returnKeyLabel="next" 
                         enter="changeField(ti3)"/>
        </s:HGroup>
        <s:HGroup>
            <s:Label text="3:" paddingTop="15"/>
            <s:TextInput id="ti3" prompt="Last Name" 
                         width="80%"
                         returnKeyLabel="next" 
                         enter="changeField(ti1)"/>
        </s:HGroup>

    </s:View>

Я нашел код на этой странице: Adobe fex 4.6

...