KeyDownイベントでReturnを取った時に一部カーソル設定処理が機能しない
UnityのUIToolkitで、TextFieldのKeyDownイベントを拾った時の話
やりたかったこと
Returnが押下されたら別のTextFieldにフォーカスを移して入力状態を継続させる
うまくいかなかった状況
フォーカス自体は移るものの、入力開始状態にならない
カーソルが出ない。
その状態でReturnを押下すると入力開始状態になる
対策
どうもReturnイベントを拾った時点ではすべてが処理されているわけではないようで、
フォーカスをかけても処理を抜けた後に確定処理が入ってしまう模様。
StopPropagationかけても特に変化は無し。
後述手法で対応したので他のメソッドを試せてないが、もっと適切なのがあるのかも。
フォーカス・カーソルの設定をReturn処理より後ろに回すため、schedule.Execute()にその辺りの処理を渡して実行を遅延させるようにしたらひとまず動くようにはなった。
例
code:csharp
this.schedule.Execute(() =>
{
var valueField = firstRow.Q<TextField>();
valueField.Focus();
valueField.SelectAll();
}).ExecuteLater(0);