2011-10-29 49 views
0

我有一個自定義TextInput用於偵聽FocusEvent.FOCUS_INFocusEvent.FOCUS_OUT事件:自定義TextInput組件失去焦點但仍包含光標?

textDisplay.addEventListener(FocusEvent.FOCUS_IN, onFocusInHandler); 
textDisplay.addEventListener(FocusEvent.FOCUS_OUT, onFocusOutHandler); 

onFocusInHandler功能基本消除,告訴用戶輸入一個值「promptview」,用onFocusOutHandler做相反。

例如,如果TextInput文本被退格爲空白值,並且用戶單擊了TextInput框,則會在TextInput中顯示「請輸入值」淺灰色提示。

,直到用戶點擊我們自定義的「清除」按鈕,這工作得很好。清除按鈕將文本設置爲「」,並且我可以告訴FocusEvent.FOCUS_OUT被接收,因爲提示文本被設置爲可見的(其未在其他地方設置)。問題是,光標停留在框中,如果它仍然具有焦點,因此如果用戶立即開始打字,都提示文本「請輸入值」 用戶鍵入的文本顯示在灰色的文本,該文本看起來相當醜陋,難以理解。

爲什麼了TextInput收到FocusEvent.FOCUS_OUT事件,如果它沒有真正失去焦點?有什麼方法可以解決這個問題嗎?

+0

你是否禁用組件?我的經驗是,Spark TextInput在禁用時失去焦點時不能正確地進行視覺更改。 –

+2

您是使用Spark TextInput還是MX TextInput?火花TextInput是否默認這樣做?只需使用提示屬性。 http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/spark/components/supportClasses/SkinnableTextBase.html#prompt – JeffryHouser

回答

1

選項1.使用SPAK的TextInput Flex中4.1或4.5。這已經默認提供一個promptDisplay(如在評論中提到的)

選項2.看看對焦皮膚。這個皮膚類通常放置在正常皮膚的頂部。這兩者之間可能存在一些焦點模糊性。嘗試使用沒有textDisplay和清除按鈕的自定義焦點皮膚。

選項3不僅使用一個焦點事件,以顯示或隱藏的提示,還看TextInput的內容。當文本通過綁定進行設置時,您不希望顯示提示。

+0

我切換到了Spark TextInput。我猶豫不決,因爲我們有其他組件依賴於我們的定製組件,但如果它可用,則更改更合理。謝謝! –