禁用编辑时,Flex TextInput不会触发FocusIn事件

时间:2011-12-14 18:16:22

标签: flex flash-builder textinput callout

我一直在试用Flex 4.6中的Callout控件,以便在移动应用中使用,而不是使用组合。方案是您有一个TextInput,提示用户“选择...”,当您触摸它(iPad)时,它会获得焦点并填充一个Callout以允许您从列表中选择。

这在Mac上运行时工作正常,但是当我部署到iPad时,只有在TextInput控件打开编辑时才会触发focusIn事件。由于弹出了软键盘,因此当我真的只想从列表中选择它时,控件可编辑,这就失败了。

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)"/>

此代码也在Holly Schinsky的示例应用程序中演示了如何使用标注。任何想法都将不胜感激。

1 个答案:

答案 0 :(得分:1)

好的我有点自以为是,不是专业编码员,但我找到了答案。

        <?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