Фокус проблемы, фокус иногда переходит на неизвестный объект - PullRequest
1 голос
/ 12 февраля 2009

[FocusEvent type = "focusIn" пузыри = true отменить = false eventPhase = 3 relatedObject = null shiftKey = false keyCode = 0]

Когда я щелкаю мышью TextField, мне бы хотелось, чтобы другое (редактируемое) поле получало фокус, но в данный момент фокус где-то теряется ... Я не знаю, где находится фокус.

Я сделал прослушиватель текстового поля, которое пытается вернуть фокус на другое поле с помощью stage.focus = editfield, но оно не работает.

У меня также есть тот же самый слушатель фокуса на стадии, но никакой разницы.

1 Ответ

1 голос
/ 12 февраля 2009

Поскольку в вашем примере вы указали «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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...