OnKeyDownとOnPreviewKeyDownの違い
妹「結局のところOnPreviewKeyDownのプレビューというのはなんだったの? べつにOnKeyDownでも良かったの?」
「OnKeyDownはそのウィジェットにフォーカスがある時だけ動くんだけど、OnPreviewKeyDownだとそれが子ウィジェットにフォーカスがあっても動く、という違いがあるらしい。実際問題として、昨日まで作ってたキー操作は、OnKeyDownに書き換えると動かなくなる」
妹「なんで動かないんだろ? フォーカスはあるよね? このウィジェットのボタンに」
「ボタンにあるから駄目なんだよ。フォーカスはこのウィジェット全体……つまりルートのCanvasPanelにないといけなくて、その下のButtonにあるということは、子ウィジェットにフォーカスがあるということになる」
妹「じゃあやっぱりOnPreviewKeyDownがいいのか。OnKeyDownを使った方がいいのはどんな場合?」
「普通の用途で考えると、OnPreviewKeyDownでだいたい良さそうな気がする。ただ他の人が使ったウィジェットを組み込んだりする時に、そのウィジェットでもOnKeyDownを使ってる場合は上手く調整する必要がありそう」