こんにちわ。
TextFieldなどのコントロールでKeyPressイベントを行っているのですが、
たとえば、TextField(以後TF)に何か入力してEnterを押したとします。
TFの処理内容は、TFの内容チェックと変換、最後にAfterを使って次のフォーカス場所にBecome-activeをしています
設定でEnterの動作はTabと同じ設定にしておりますので次のフォーカスに移動します。
通常ならそうなのですが、
TF1に入力し、Enterを押すところを連打します。
するとTF1→TF2→TF3とフォーカスが移るはずなのですが、その最後のBecome-activeが処理されて
あたかもTF3からTF2へフォーカスが巻き戻ったかのように見えてしまいます。
初めはAfterが悪さしているのかと思いAfterを外し、試験的に処理内にSleepを入れ疑似的に処理を重くして
実験してみたのですが、やはり巻き戻ってしまします。
自分の考えでは、Enterを押した処理中は他のキー操作を受け付けないようにしたいのですが
そのようなことはできるのでしょうか?
もしくは、巻き戻りを解消する方法はありますでしょうか?
KeyPressの制限
サンプルがあるでしょうか?どんな処理があって、何に影響されているか、コードがあると分かりやすいと思います。
heavybugtracker様>
ご返信頂いていたのに返事が遅れてしまい申し訳ありません。
サンプルは用意できなかったのですが、お聞きしたい事が大まかにまとまったので・・・
・methodが完結するまでキー入力を一切受け付けなくしたい。({after 0s do}も含める)
・上記が無理であれば、methodと{after 0s do}の間を限りなくゼロにしたい。
この2点は可能でしょうか?よろしくお願い致します。
ご返信頂いていたのに返事が遅れてしまい申し訳ありません。
サンプルは用意できなかったのですが、お聞きしたい事が大まかにまとまったので・・・
・methodが完結するまでキー入力を一切受け付けなくしたい。({after 0s do}も含める)
・上記が無理であれば、methodと{after 0s do}の間を限りなくゼロにしたい。
この2点は可能でしょうか?よろしくお願い致します。
回答が遅くなり、すみません。。。
シンプルですが、解決できるかもしれませんので、次の方法で試してみたらどうでしょうか?
1. keypress でEnter検出、Enterキーなら
2. {set TF.enabled = false}
3. {dispatch-events true}
3. 旧TF処理
4. {set TF.enabled = true}
シンプルですが、解決できるかもしれませんので、次の方法で試してみたらどうでしょうか?
1. keypress でEnter検出、Enterキーなら
2. {set TF.enabled = false}
3. {dispatch-events true}
3. 旧TF処理
4. {set TF.enabled = true}
heavybugtracker様>
ご回答ありがとうございます。
提示して頂いた方法はまだ試した事がないので、組み込んでみたいと思います。
お忙しい中ありがとうございました。
また何かあれば、よろしくお願い致します。
ご回答ありがとうございます。
提示して頂いた方法はまだ試した事がないので、組み込んでみたいと思います。
お忙しい中ありがとうございました。
また何かあれば、よろしくお願い致します。