Come posso fare riferimento a TextInput di un ComboBox modificabile?
-
03-07-2019 - |
Domanda
Ho un componente ComboBox modificabile e voglio fare riferimento al TextInput che viene mostrato, al fine di selezionare programmaticamente il testo in esso. Questo è molto semplice su un TextInput:
private function selectNameText():void
{
nameTextInput.selectionBeginIndex = 0;
nameTextInput.selectionEndIndex = nameTextInput.text.length;
}
Ma non riesco a trovare alcun modo per accedere a TextInput di un ComboBox modificabile.
Soluzione
Sembra che non sia necessario fare riferimento a TextInput per il motivo QUESTO , poiché il testo è selezionato per impostazione predefinita.
Altri suggerimenti
Ho riscontrato questo problema durante l'utilizzo di ComboBox come DataRid itemRenderer. Se è necessario fare riferimento a TextInput, è possibile ignorare ComboBox e creare un getter che restituisca textInput protetto. Nel mio caso, avevo bisogno di impedire la selezione automatica che si verifica quando un ComboBox è modificabile. Guardando ComboBox, questo si verifica durante updateDisplayList quindi questo dovrebbe fare il trucco:
package com.whatever.controls
{
import mx.controls.ComboBox;
public class EditableComboBox extends ComboBox
{
public function EditableComboBox()
{
super();
}
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
{
super.updateDisplayList(unscaledWidth, unscaledHeight);
if (editable)
{
textInput.selectionBeginIndex = text.length;
textInput.selectionEndIndex = text.length;
}
}
}
}
Durante la creazione della casella combinata " Completa " evento, è possibile ottenere direttamente il componente:
private function creationCompleteEvt ( evt:FlexEvent ) : void
{
var targTextInput:UITextInput = UITextInput( myComboBox.getChildAt(2) );
targTextInput.setSelection( 0, targTextInput.selectionEndIndex );
}