2011-10-29 2 views
0

FocusEvent.FOCUS_INFocusEvent.FOCUS_OUT 이벤트를 수신하는 사용자 지정 TextInput가 있습니다.사용자 정의 TextInput 구성 요소는 포커스를 잃지 만 여전히 커서가 포함되어 있습니까?

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

onFocusInHandler 함수는 기본적으로 사용자에게 값을 입력하라는 "promptview"를 제거합니다.

예를 들어, TextInput 텍스트가 빈 값으로 백 스페이스되고 사용자가 TextInput 상자를 클릭하면 TextInput에 "값을 입력하십시오"라는 옅은 회색 프롬프트가 표시됩니다.

사용자가 사용자 지정 "지우기"버튼을 클릭 할 때까지 제대로 작동합니다. 지우기 단추는 텍스트를 ""로 설정하고 프롬프트 텍스트가 표시되도록 설정 되었기 때문에 FocusEvent.FOCUS_OUT을 수신했다고 말할 수 있습니다 (다른 곳에서는 설정되지 않음). 문제는 커서가 여전히 포커스가있는 것처럼 상자에 남아 있으므로 사용자가 즉시 입력을 시작하면 "값을 입력하십시오." 프롬프트 텍스트와 회색 텍스트 위에 사용자 입력 텍스트가 나타납니다. 꽤 못생긴하고 읽을 수없는 것 같습니다.

실제로 포커스를 잃지 않는 경우 TextInput에서 FocusEvent.FOCUS_OUT 이벤트를 수신하는 이유는 무엇입니까? 이 문제를 해결할 수있는 방법이 있습니까?

+0

구성 요소를 사용 중지 하시겠습니까? 내 경험에 따르면 Spark TextInput은 포커스가 비활성화 된 경우 시각적으로 변경하지 못하도록 올바르게 설정되지 않았습니다. –

+2

Spark TextInput 또는 MX TextInput을 사용하고 있습니까? TextInput은 기본적으로이 작업을 수행하지 않습니까? 프롬프트 속성을 사용하기 만하면됩니다. http://help.adobe.com/ko_KR/FlashPlatform/reference/actionscript/3/spark/components/supportClasses/SkinnableTextBase.html#prompt – JeffryHouser

답변

1

옵션 1. Flex 4.1 또는 4.5에서 Spak TextInput을 사용하십시오. 이것은 기본적으로 promptDisplay를 제공합니다 (주석에 언급 된대로)

옵션 2. 포커스 스킨을 살펴보십시오. 이 스킨 클래스는 보통 보통 스킨의 맨 위에 배치됩니다. 이 둘 사이에는 약간의 초점 모호성이있을 수 있습니다. textDisplay 및 clear 버튼없이 사용자 정의 포커스 스킨을 사용해보십시오.

옵션 3. 포커스 이벤트를 사용하여 프롬프트를 표시하거나 숨길뿐만 아니라 TextInput의 내용을 살펴보십시오. 텍스트를 wel로 바인딩하여 설정할 때 프롬프트를 표시하지 않으려합니다.

+0

Spark TextInput으로 전환했습니다. 나는 우리가 우리의 관례에 의존하는 다른 구성 요소들을 가지고 있었기 때문에 주저했지만, 가능하다면 그것은 단지 변화시키는 것이 더 합리적이다. 감사! –