2017-01-20 72 views
1

Windows 10モバイルuwpアプリケーションがあり、2つの問題があります。Windows 10 uwpコントロールにフォーカスを合わせてもソフトキーボードが表示されない

まず、アプリのコントロールにフォーカスを設定しました。これを行うには、共通呼び出しを使用します。

Control.Focus(FocusState.Programmatic); 

ただし、これが機能しない場合があります。たいていの場合、たとえばページが読み込まれたときに、フィールドの1つに初期フォーカスを設定しようとしていて、機能しません。私はこの呼び出しを2つの場所で試しました。最初に、ページのコンストラクタで、InitializeComponenetsの後にオーバーライドonNavigatedToメソッドを呼び出します。これを呼び出すのに最適な場所はどこですか?また、特に新しいページがインスタンス化されたときに、動作しないように見える理由は何ですか?

第2に、フォーカスの設定に関連します。私は上にリストされた同じProgrammaticフォーカスコールで私が制御を設定する私のUI上のテキストボックスを持っています。しかし、これが起きたときにソフト(画面上の)キーボードが表示されます。私はフォーカスをプログラマチックに設定したときに表示したくないが、ユーザがフィールドを選択した場合に表示させる。このシナリオでは、バーコードスキャナがあります。ページが読み込まれると、テキストボックスにコードのフォーカスが設定され、バーコードスキャナの結果に基づいてテキストボックスのテキストをコードから設定する準備が整います。ユーザーがこのフィールドに入力する必要はほとんどありません。したがって、私はキーボードを必要としないか、キーボードを表示して不動産を占有したいと考えていません。まれなケースがあります。たとえば、バーコードが読み取れない場合など、手動でテキストを入力することができます。そうすると、コントロールを選択することになります(既にフォーカスがプログラムによって設定されている可能性があります)。フォーカスを再度設定する必要がありますが、代わりにカーソル、タッチなどを使用して、ソフトキーボードを表示します。

これを行うにはどのような方法が最適ですか?

ありがとうございます!

+0

[共に働いていますか](http://stackoverflow.com/q/41598350/2681948)? ;) – Romasz

+0

ハ、そうではありません。面白いことは、その投稿がすべての検索結果に表示されないということです。ただ皮肉なことだと思います。しかし、それをリンクしていただきありがとうございます、私も同様に試みることは非常に良い解決策のように思えます。ありがとう! –

+0

キーボードを表示するには、* InputPane.TryShow()*が必要なときに試してみてください。上記の質問に対する答えの組み合わせ/変更と思いますが、あなたが望むものを達成することができます。 – Romasz

答えて

3

Focus()を呼び出すのに最適な場所は、フォーカスしようとしているのと同じコントロールのLoadedイベントハンドラにあると思います。このコントロールが完全に読み込まれると、フォーカスを含む、相互作用の準備ができていることを意味します。

TextBoxクラスには、オンスクリーンキーボードが表示されないように、PreventKeyboardDisplayOnProgrammaticFocusプロパティがあります。 trueに設定してください。問題が解決するはずです。

1

は限りTextBoxのは、とにかく私のために動作しませんでしたよりも、何かを中心として、私は良い解決策を見つけた:

私は呼ば:

using Windows.UI.ViewManagement; 

InputPane.GetForCurrentView().TryHide(); 
とキーボードが隠れます。

関連する問題