Поскольку в вашем примере вы указали «FocusEvent», я сосредоточусь на решениях Flex. Это не класс Flash AS3.
Держу пари, что Flex пытается управлять фокусом сам по себе, и это мешает вашим попыткам установить его. Однако есть несколько способов обойти это.
Флекс пытается работать против тебя?
Во-первых, вы можете захотеть использовать класс FocusManager или метод setFocus UIComponent (это зависит от того, что вам конкретно нужно сделать, я считаю, что FocusManager позволяет вам ориентироваться на несколько объектов, в то время как метод setFocus намного проще) Stage.focus. Преимущество работы в системе компонентов Flex.
Вы слушаете правильное событие?
В противном случае постарайтесь убедиться, что цель FocusEvent, которую вы ищете, не является ни вашим текстовым полем, ни дочерним по отношению к вашему текстовому полю. (Только ради здравомыслия). Если это не работает, убедитесь, что вы отправляете событие только один раз. Далее, я бы попытался использовать MouseEvent.CLICK вместо FocusEvent.
Не удалось ли все остальное?
К сожалению, Flex часто далек от совершенства. Я нахожу, что иногда мне приходится использовать setTimeout, чтобы обойти тот факт, что он не запускает события в «правильном порядке» - вы изменяете размер чего-то, но «RESIZE» отправляется до того, как он будет перерисован, вы меняете шрифт, и свойство TextWrea TextArea не возвращает правильное число. Обходной путь
private function myListener( event:FocusEvent ):null
{
setTimeout( function(){ editfield.setFocus(); }, 35 );
}