2

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)。ここで他に何を試すことができるかわかりません。何か案は?

ここで助けてくれてありがとう。

仕様:

  • FlashBuilder 4.6 を使用してビルドおよびコンパイルしました (ただし、4.5.1 も利用できます)
  • Air 3.1 の使用
  • OS X Lion でコンパイル
  • 第 1 世代と第 3 世代の両方の iPad でテスト済み
  • Flex SDK 4.6.0 の使用
4

0 に答える 0