Curl Global Community

Full Version: KeyPressの制限
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
こんにちわ。

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を押した処理中は他のキー操作を受け付けないようにしたいのですが

そのようなことはできるのでしょうか?

もしくは、巻き戻りを解消する方法はありますでしょうか?

サンプルがあるでしょうか?どんな処理があって、何に影響されているか、コードがあると分かりやすいと思います。

heavybugtracker様

ご返信頂いていたのに返事が遅れてしまい申し訳ありません。

サンプルは用意できなかったのですが、お聞きしたい事が大まかにまとまったので・・・

・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}
heavybugtracker様

ご回答ありがとうございます。

提示して頂いた方法はまだ試した事がないので、組み込んでみたいと思います。

お忙しい中ありがとうございました。

また何かあれば、よろしくお願い致します。