我正在构建一个可以同时在Android,iOS和桌面上启动的应用。该应用程序包含一个附加到vBulletin系统的登录,我遇到了一个重大问题(客户端是坚定的必须修复)。在iOS上,如果要键入其displayAsPassword设置为true的TextInput,则在键入时将显示纯文本。单击TextInput后,它会正确显示。
以下是我在Flex中使用的代码
<s:TextInput id="inputField" width="100%" styleName="loginFields" text="Password" focusAlpha="0" focusEnabled="false" autoCorrect="false" />
然后我将焦点事件附加到运行这些函数的输入字段。
private var defaultText:String = 'Password';
private var passwordDisplay:Boolean = true;
private function focusIn (e:FocusEvent = null):void {
if (this.inputField.text == this.defaultText){
this.inputField.text = '';
}
if (this.passwordDisplay){
this.inputField.displayAsPassword = true;
}
}
private function focusOut (e:FocusEvent = null):void {
if (this.inputField.text == ''){
this.inputField.text = this.defaultText;
if (this.passwordDisplay){
this.inputField.displayAsPassword = false;
}
}
}
文件中有更多代码,但这是唯一相关的。基本上,在焦点上,它检查文本==默认文本。如果是这样,它会清空该字段。然后将displayAsPassword设置为true。在焦点上,它检查字段是否为空。如果是,则将字段重置为默认值,并将displayAsPassword重置为false。我知道默认文本是内置的,但我需要的功能比它提供的更多。
现在,此问题(密码显示为明文时显示为明文的密码)出现在iOS 中,并且在模拟器中不会出现。它在Android和桌面上完美无缺。我已经尝试手动重新创建功能(可能但不理想,因为caretIndex不是TextInput属性),我试图隐藏TextInput并覆盖与输入长度匹配的'•'字段(因为TextInput是StageText的)。我不确定我还能在这里尝试什么。有什么想法吗?
提前感谢您的帮助。
规格: