Подведу итоги нашего обсуждения для удовольствия будущих читателей.
Найди виновника
Вы можете взглянуть на код SkinnableTextBase , чтобы увидеть, какие прослушиватели событий подключены внутри. Теперь, когда вы это знаете, вы можете использовать hasEventListener () , чтобы проверить, какие из них не были удалены. Используя эту технику, мы обнаружили, что эти слушатели все еще задерживаются:
- MouseEvent.MOUSE_DOWN
- TouchInteractionEvent.TOUCH_INTERACTION_START
Удаление их (желательно без подкласса TextInput)
Посмотрите код SkinnableTextBase, где зарегистрированы эти слушатели:
override public function styleChanged(styleProp:String):void
{
super.styleChanged(styleProp);
if (!styleProp ||
styleProp == "styleName" || styleProp == "interactionMode")
{
if (getStyle("interactionMode") == InteractionMode.TOUCH && !touchHandlersAdded)
{
addEventListener(MouseEvent.MOUSE_DOWN, touchMouseDownHandler);
addEventListener(TouchInteractionEvent.TOUCH_INTERACTION_START,
touchInteractionStartHandler);
touchHandlersAdded = true;
}
else if (getStyle("interactionMode") == InteractionMode.MOUSE && touchHandlersAdded)
{
removeEventListener(MouseEvent.MOUSE_DOWN, touchMouseDownHandler);
removeEventListener(TouchInteractionEvent.TOUCH_INTERACTION_START,
touchInteractionStartHandler);
touchHandlersAdded = false;
}
}
}
Это означает, что если вы установите стиль interactionMode
TextInput InteractionMode.MOUSE
, это должно удалить слушателей.
Примечание. Возможно, вы захотите взглянуть на базу ошибок JIRA и сообщить об ошибке, если ее еще никто не обнаружил. Хотя я должен сказать, что не уверен, что этот JIRA сохраняется и сейчас, когда Flex переходит на Apache.