【问题标题】:Caret on textInput never goes awaytextInput 上的插入符号永远不会消失
【发布时间】:2011-01-29 01:41:53
【问题描述】:

我有一个带有各种 textInputs 和一个提交按钮的登录表单。如果您提交正确的登录凭据,系统将卸载登录视图并加载应用程序视图。很标准。 不幸的是,我注意到了这个奇怪的错误,如果您将鼠标悬停在其中一个 textInput 框上,然后仅使用键盘填写表单(并将鼠标停在 textInput 顶部),然后 Tab 提交按钮然后按空格键,即通过键盘登录,鼠标光标将在新视图中保持插入符号,无论您做什么(移动,单击),直到您找到另一个 textInput 以撤消光标状态。

我尝试通过 CursorManager 做各种事情,但似乎没有任何效果。我尝试将事件 ROLL_OUT 或 MOUSE_OUT 事件分派到 textInput,但这也不起作用。

我试图在一个小例子中重现这一点,但我无法做到,我意识到这让帮助我变得更加困难。仍然希望听到是否有人处理过类似的事情或听到任何可能听起来相关的指针。

谢谢!

f

【问题讨论】:

  • 我要索取样品。由于您无法创建可重现的,这让我想知道您的代码中是否没有任何东西导致这种情况。我可能会建议您复制您的项目并慢慢删除内容,直到它消失为止。
  • 是的......我认为你是绝对正确的。我慢慢地弄清楚是什么导致了它的发生,尽管我必须承认我仍然不确定它为什么会发生。将在几秒钟内发布我的发现。

标签: apache-flex actionscript-3


【解决方案1】:

我遇到了完全相同的问题。这是我的登录屏幕视图:

<fx:Style>
    @namespace s "library://ns.adobe.com/flex/spark";
    @namespace mx "library://ns.adobe.com/flex/mx";
    .textInput
    {
        showErrorTip : true;
        showErrorSkin : true;
    }
</fx:Style>
<fx:Declarations>
    <mx:StringValidator id="usernameValidator" source="{username}" property="text"
                        trigger="{signinButton}" triggerEvent="click" required="true" />
    <mx:StringValidator id="passwordValidator" source="{password}" property="text"
                        trigger="{signinButton}" triggerEvent="click" required="true"/> 
</fx:Declarations>
<fx:Script>
    <![CDATA[
        import info.thwm.appx.model.vo.LoginVO;
        import info.thwm.appx.view.events.ViewEvent;

        import mx.validators.Validator;

        public static const NAME:String = "LoginView";
        [Bindable] public var loginVO:LoginVO = new LoginVO();

        private function init():void{
            focusManager.setFocus( username );
            sendEvent( ViewEvent.VIEW_CREATED, NAME );
        }

        private function sendEvent( type:String, data:Object=null ):void{
            dispatchEvent( new ViewEvent( type, data ) );
        }

        private function loginUser(event:MouseEvent = null):void{
            var validators:Array = [usernameValidator, passwordValidator];
            var errors:Array;
            errors = Validator.validateAll(validators);
            if (errors.length == 0){                                        
                sendEvent( ViewEvent.BTN_LOGIN_CLICK, loginVO );
            }                               
        }
    ]]>
</fx:Script>

<s:Panel width="320" height="230" title="Sign In">
<s:layout>
    <s:VerticalLayout/>
</s:layout>
<s:Form id="form1" styleName="formStyle" defaultButton="{signinButton}">            <s:layout>
            <s:FormLayout paddingLeft="25" gap="-5"/>
        </s:layout>
        <s:FormItem label="Username" required="true" skinClass="info.thwm.appx.view.skins.FormItemSkin">
            <s:TextInput id="username" text="@{loginVO.username}" styleName="textInput"/>
        </s:FormItem>
        <s:FormItem label="Password" required="true" skinClass="info.thwm.appx.view.skins.FormItemSkin">
            <s:TextInput displayAsPassword="true" id="password" text="@{loginVO.password}" styleName="textInput"/>
        </s:FormItem>
        <s:FormItem>
            <s:CheckBox label="Remember" id="remember" selected="@{loginVO.remember}"/>
        </s:FormItem>
        <s:FormItem>
            <s:Button label="Sign In" id="signinButton" click="loginUser(event)"/>
        </s:FormItem>
    </s:Form>
    <s:controlBarContent>
        <s:HGroup width="100%" verticalAlign="middle">
            <s:Button label="Register" id="registerButton" click="sendEvent( ViewEvent.BTN_REGISTER_CLICK );" />
            <s:Label buttonMode="true" color="#57595A" text="Forgot your username or password?" click="sendEvent( ViewEvent.BTN_PSW_REMINDER_CLICK );"/>
        </s:HGroup>
    </s:controlBarContent>
</s:Panel>

这没什么特别的,但是如果我用鼠标选择用户名字段,然后只使用键盘进行其余操作,一旦我进入下一个视图,鼠标光标就会变成输入插入符号。唯一的解决方法是在下一个视图的 onCreationComplete 事件函数中添加这一行“Mouse.cursor = MouseCursor.ARROW”。

【讨论】:

    【解决方案2】:

    尝试将焦点显式设置到另一个对象?见UIComponent.setFocus()

    【讨论】:

    • 感谢您的建议。不幸的是,这似乎不起作用。
    【解决方案3】:

    在将我的应用程序剥离到几乎是最基本的部分后,我注意到我的 textInputs 的 text 属性绑定到另一个变量的字段。我不确定为什么这会产生上述问题,但将绑定解决了问题。我希望我能在这件事上做更多的研究,但遗憾的是这已经花费了太多时间。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 2021-04-15
      • 1970-01-01
      • 2011-03-18
      • 1970-01-01
      • 1970-01-01
      • 2014-04-03
      相关资源
      最近更新 更多