TryShowPrimaryView メソッドを実行してもタッチ キーボードが表示されない

こんにちは、Platform SDK (Windows SDK) サポートチームです。

今回は、CoreInputView クラスを利用した、アプリケーションからタッチ キーボードを制御する際の不具合についてご案内します。

現象

Windows 10 version 1803 (RS4) において、フォアグラウンドにいるアプリケーションが CoreInputView.TryShowPrimaryView メソッドを実行しても、入力に使用するためのタッチ キーボード (Input Pane) を表示できません。

詳細

本来、以下のみっつの条件をすべて満たす場合、UWP アプリやデスクトップ アプリケーションから CoreInputView.TryShowPrimaryView メソッドを実行することによりタッチ キーボードを表示することができます。

  • 設定アプリの [デバイス] - [入力] にある [タブレット モードでなく、キーボードが接続されていない場合に、タッチ キーボードを表示する] をオンに設定する
  • ハードウェア キーボードが接続されていない
  • アプリケーションがフォアグラウンドにいる

アプリケーションでには、以下のようなコードを実装します。

// 現在のビューに対する CoreInputView オブジェクトを取得します
CoreInputView view = CoreInputView.GetForCurrentView();
// メソッドを実行します
bool bResult = view.TryShowPrimaryView();

しかしながら、Windows 10 version 1803 (RS4) は、この条件を満たした上でメソッドを実行しても、タッチ キーボードが表示されません。TryShowPrimaryView メソッド実行に対して結果 (bResult) として true が返っても、デスクトップ上に変化がないままになります。

原因

OS の不具合のため、TryShowPrimaryView メソッドの実行ではタッチ キーボードが表示できません。

UWP アプリからの実行か、WPF などのデスクトップ アプリからの実行かにかかわらず、Windows 10 version 1803 の仕様としては CoreInputView.TryShowPrimaryView メソッドによりタッチ キーボードが表示できますが、関係するクラスとタッチ キーボードとの連携に問題があり、メソッドを実行してもタッチ キーボードが表示できなくなっています。

なお、UWP アプリでは CoreTextEditContext クラスを利用し、InputPaneDisplayPolicy プロパティを適切に設定することで入力フィールドにフォーカス イン時に OS が自動的にタッチ キーボードを表示する機能を制御できますが、この機能も正しく動作

しない場合があります。WPF などのデスクトップ アプリからは CoreTextEditContext クラスが利用できないため、フォーカス イン時の OS による自動表示など、タッチ キーボードを任意に制御する方法はありません。

状況

マイクロソフトではこの問題を調査中です。