2010-03-18 3 views
0

Я пишу приложение Flex, и я натолкнулся на то, что, по моему мнению, является странной проблемой.DateChooser корректно обновляется, только если видимый при запуске

Я хочу создать текстовое поле и DateChooser, поскольку поле даты не делало то, что я хотел, и это Halo, поэтому я не могу легко его скрыть. Я хочу, чтобы DateChooser показывал, когда я нажимаю на ввод текста. Вот только из моего кода:

<s:TextInput id="wholeDate" width="100" 
       mouseOver="stopChangeToNormal();" 
       paddingRight="10" 
       click="date1.visible = true" 
       focusOut="date1.visible = false"/> 
    <s:Button label="Go" width="70" /> 
</s:Panel> 

<mx:DateChooser id="date1" 
       visible = "false" 
       change="useDate(event);" 
       mouseOver="changeToNormalState = false;" 
       y="{wholeDate.y + buttonsGroup.y + 20}" 
       x="{wholeDate.x + buttonsGroup.x - 175 }" />  

Странная вещь, что это работает, если я сделаю это visible = "true", чтобы начать, но если у меня есть это visible="false" он не работает! Он показывает, но дата, которую я выбираю, не отображается в поле, как это происходит, если у меня есть visible="true", но я не хочу, чтобы он был видимым изначально.

Любые идеи?

ответ

1

Я не думаю, что это действительно связано с первоначальной видимостью DateChooser. Вы подтвердили, что обработчики событий действительно вызваны и в порядке, который имеет смысл? Проблема заключается в том, что при попытке сделать выбор в DateChooser TextInput получает событие focusOut, которое скрывает DateChooser, что, по-видимому, мешает ему получать событие выбора. Я думаю, вам нужно быть более избирательным, когда вы фактически скрываете DateChooser. Возможно, вам нужно отложить скрытие, чтобы иметь возможность сначала ответить на выбор.

+0

Вы снова правы lach! это была проблема focusOut. Я удалил его из TextInput, и он сработал. Да, событие вообще не вызывалось. большое спасибо – Tam