Свойство прокрутки TextField Actionscript 3 получает значение 0 при щелчке
-
12-09-2019 - |
Вопрос
Я заполняю текстовое поле программно и прокручиваю до maxScrollH по мере добавления нового текста, чтобы пользователь мог видеть развитие текста.Это работает нормально, пока я не нажимаю TextField, который устанавливает значение ScrollH обратно в 0 и помещает курсор в тексте в эквивалентную позицию.
textField.setSelection( text.length, text.length ); //sets the caretIndex/selection to the end
textField.scrollH = textField.maxScrollH; //scrolls to max
это код, который я использую для прокрутки при обновлении текстового свойства textField.Я попытался добавить прослушиватель к событию щелчка в textField, который в каком-то смысле работает, но вызывает видимый скачок.
override protected function createChildren() : void
{
super.createChildren();
textField.addEventListener(MouseEvent.CLICK, handleTextFieldClick, false, 0, true);
}
protected function handleTextFieldClick(event:MouseEvent):void
{
textField.scrollH = currentTextFieldScrollPosition; //stored scrollH value
trace(textField.scrollH);
}
Я предполагаю, что где-то рассчитывается или сохраняется позиция прокрутки, которую я не могу найти.
Решение
Гибкий TextInput устанавливает выбор textField:
/**
* @private
* Gets called by internal field so we draw a focus rect around us.
*/
override protected function focusInHandler(event:FocusEvent):void
{
if (event.target == this)
systemManager.stage.focus = TextField(textField);
var fm:IFocusManager = focusManager;
if (editable && fm)
{
fm.showFocusIndicator = true;
if (textField.selectable &&
_selectionBeginIndex == _selectionEndIndex)
{
textField.setSelection(0, textField.length);
}
}
[...]
переопределение этого в моем компоненте устраняет эту проблему:
override protected function focusInHandler(event:FocusEvent):void
{
super.focusInHandler(event);
textField.scrollH = currentTextFieldScrollPosition;
}
Другие советы
Оказывается, вам нужно создать обработчик onclick для окна с UIScrollbar, а затем добавить для него прослушиватель событий фокусировки, который передает местоположение полосы прокрутки во время onclick в фокус.Экшнскрипт 3:сохранение положения полосы прокрутки textarea пользовательского интерфейса при потере фокуса при внедрении Flash