入力範囲を使用したタッチ キーボードの変更
ユーザーがタッチ キーボード、つまりソフト入力パネル (SIP) でデータを入力できるように、ユーザーが入力すると予想されるデータの種類に合わせてテキスト コントロールの入力値の種類を設定できます。
重要な API
タッチ キーボードは、アプリがタッチ スクリーン付きのデバイスで実行されているときにテキスト入力に使用できます。 タッチ キーボードは、TextBox または RichEditBox などの編集可能な入力フィールドをユーザーがタップしたときに呼び出されます。 ユーザーが入力すると予想されるデータの種類と一致するようにテキスト コントロールの入力スコープを設定することで、ユーザーがより速く簡単にアプリにデータを入力できるようになります。 入力値の種類は、システムに対してコントロールが予期しているテキスト入力の種類のヒントとなるため、システムはその入力の種類用の特殊なタッチ キーボード レイアウトを提供できます。
たとえば、テキスト ボックスが 4 桁の PIN の入力専用の場合は、InputScope プロパティを Number に設定します。 これにより、システムに数字キーパッド レイアウトの表示が指示されるため、ユーザーは簡単に PIN を入力できます。
重要
- これは、SIPにのみ適用されます。 Windows の簡単操作オプションで使用できるハードウェア キーボードやスクリーン キーボードには適用されません。
- 入力スコープは、いかなる入力検証も実行させん。また、ユーザーがハードウェア キーボードやその他の入力デバイスを通じて入力を行うことを妨げません。 必要に応じて、コードで入力を検証する必要があります。
テキスト コントロールの入力スコープの変更
アプリで使用可能な入力スコープは、InputScopeName値 列挙のメンバーです。 TextBoxやRichEditBoxのInputScope プロパティは、次のいずれかの値に設定できます。
重要
PasswordBox の InputScope プロパティでは、Password と NumericPin 値のみがサポートされています。 その他のデータはすべて無視されます。
ここでは、複数のテキスト ボックスの入力スコープを各テキスト ボックスの予想されるデータと一致するように変更します。
XAML で入力スコープを変更するには
ページの XAML ファイルで、変更したいテキスト コントロールのタグを見つけます。
InputScope属性をタグに追加し、予想される入力と一致する InputScopeName 値を指定します。
一般的な顧客連絡先フォームに表示されるテキスト ボックスを次に示します。 InputScopeを設定すると、データに適したレイアウトのタッチ キーボードが各テキスト ボックスに表示されます。
<StackPanel Width="300"> <TextBox Header="Name" InputScope="Default"/> <TextBox Header="Email Address" InputScope="EmailSmtpAddress"/> <TextBox Header="Telephone Number" InputScope="TelephoneNumber"/> <TextBox Header="Web site" InputScope="Url"/> </StackPanel>
コード内の入力スコープを変更するには
ページの XAML ファイルで、変更したいテキスト コントロールのタグを見つけます。 設定されていない場合は、コードでコントロールを 参照できるように x:Name 属性 を設定してください。
<TextBox Header="Telephone Number" x:Name="phoneNumberTextBox"/>
新 しい InputScope オブジェクトをインスタンス化します。
InputScope scope = new InputScope();
新 しい InputScopeName オブジェクトをインスタンス化します。
InputScopeName scopeName = new InputScopeName();
InputScopeName値 オブジェクトの NameValue プロパティを InputScopeNameValue 列挙の値に設定します。
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
InputScopeName オブジェクトを InputScope オブジェクトの Names コレクションに追加します。
scope.Names.Add(scopeName);
InputScope オブジェクトをテキスト コントロールの InputScope プロパティの値として設定します。
phoneNumberTextBox.InputScope = scope;
すべてのコードをまとめて次に示します。
InputScope scope = new InputScope();
InputScopeName scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
scope.Names.Add(scopeName);
phoneNumberTextBox.InputScope = scope;
同じ手順をこの略記コードに凝縮することができます。
phoneNumberTextBox.InputScope = new InputScope()
{
Names = {new InputScopeName(InputScopeNameValue.TelephoneNumber)}
};
テキスト予測、スペル チェック、自動修正
TextBox コントロールと RichEditBox コントロールには、SIP の動作に影響を与えるいくつかのプロパティがあります。 ユーザーに最適なエクスペリエンスを提供するには、タッチを使用してこれらのプロパティがテキスト入力にどのように影響するかを理解することが重要です。
IsSpellCheckEnabled - テキスト コントロールでスペル チェックが有効な場合、コントロールはシステムのスペルチェックエンジンと対話して、認識できない単語をマークします。 単語をタップすると、修正候補の一覧が表示されます。 スペル チェックは既定で有効になっています。
Defaultデフォルトの 入力スコープの場合、このプロパティでは、文の最初の単語の自動的に大文字化したり、入力中に単語を自動修正したりすることもできます。 これらの自動修正機能は、他の入力スコープで無効になっている可能性があります。 詳細については、このトピックの後半の表を参照してください。
IsTextPredictionEnabled - テキスト コントロールに対してテキスト予測が有効になっている場合、システムは入力を開始している可能性のある単語の一覧を表示します。 単語全体を入力する必要がなく、一覧から選択できます。 テキスト予測が既定で有効になっています。
入力スコープが Default 以外の場合、IsTextPredictionEnabled プロパティが true であっても、テキスト予測が無効になる可能性があります。 詳細については、このトピックの後半の表を参照してください。
PreventKeyboardDisplayOnProgrammaticFocus - このプロパティが true の場合、プログラムによってテキスト コントロールにフォーカスが設定されたときに、システムはSIP を表示できなくなります。 その代わり、キーボードはユーザーがコントロールと対話するときだけ表示されます。
Windows のタッチ キーボード インデックス
これらの表は、一般的な入力値の種類について、Windows ソフト入力パネル (SIP) のレイアウトを示しています。 IsSpellCheckEnabled プロパティと IsTextPredictionEnabled プロパティによって有効になっている機能に対する入力スコープの効果が、入力スコープごとに一覧で表示されます。 これは、使用可能な入力スコープの包括的な一覧ではありません。
ヒント
ほとんどのタッチ キーボードでは、アルファベットのレイアウトと数字と記号のレイアウトを切り替えることができます。数字と記号のレイアウトに変更するには、&123 キーを押し、アルファベットのレイアウトに変更するには、abcd キーを押します。
既定値
<TextBox InputScope="Default"/>
既定の Windows タッチ キーボード。
- スペルチェック: IsSpellCheckEnabled = trueの場合は有効、IsSpellCheckEnabled = falseの場合は無効。
- 自動修正: IsSpellCheckEnabled = trueの場合は有効、IsSpellCheckEnabled = falseの場合は無効
- 自動大文字化: IsSpellCheckEnabled = trueの場合は有効、IsSpellCheckEnabled = falseの場合は無効
- テキスト予測: IsTextPredictionEnabled = trueの場合は有効、IsTextPredictionEnabled = falseの場合は無効
CurrencyAmountAndSymbol
<TextBox InputScope="CurrencyAmountAndSymbol"/>
既定の数字と記号のキーボード レイアウト。
- その他の記号を表示するためのページの左/右キーがある
- スペル チェック: 既定ではオン、無効にすることもできます
- 自動修正: 既定ではオン、無効にすることもできます
- 自動大文字化: 常に無効
- テキスト予測: 既定ではオン、無効にすることもできます
URL
<TextBox InputScope="Url"/>
- .com キーと Go キー (Go) キーを含む .com キーを長押しすると、追加オプション (.org、.net、地域固有のサフィックス) が表示される
- :、-、/ の各キーがある
- スペル チェック: 既定ではオフ、有効にすることもできます
- 自動修正: 既定ではオフ、有効にすることもできます
- 自動大文字化: 既定ではオフ、有効にすることもできます
- テキスト予測:既定ではオフ、有効にすることもできます
EmailSmtpAddress
<TextBox InputScope="EmailSmtpAddress"/>
- .com キーと .com キーが@含まれます。 .com キーを長押しすると、追加オプション (.org、.net、地域固有のサフィックス) が表示される
- _ キーと - キーがある
- スペル チェック: 既定ではオフ、有効にすることもできます
- 自動修正: 既定ではオフ、有効にすることもできます
- 自動大文字化: 既定ではオフ、有効にすることもできます
- テキスト予測:既定ではオフ、有効にすることもできます
番号
<TextBox InputScope="Number"/>
- スペル チェック: 既定ではオン、無効にすることもできます
- 自動修正: 既定ではオン、無効にすることもできます
- 自動大文字化: 常に無効
- テキスト予測: 既定ではオン、無効にすることもできます
TelephoneNumber
<TextBox InputScope="TelephoneNumber"/>
- スペル チェック: 既定ではオン、無効にすることもできます
- 自動修正: 既定ではオン、無効にすることもできます
- 自動大文字化: 常に無効
- テキスト予測: 既定ではオン、無効にすることもできます
検索する
<TextBox InputScope="Search"/>
- Enter キーの代わりに検索キーがある
- スペル チェック: 既定ではオン、無効にすることもできます
- 自動修正: 既定ではオン、無効にすることもできます
- 自動大文字化: 常に無効
- テキスト予測: 既定ではオン、無効にすることもできます
SearchIncremental
<TextBox InputScope="SearchIncremental"/>
- Default と同じレイアウト
- スペル チェック: 既定ではオフ、有効にすることもできます
- 自動修正: 常に無効
- 自動大文字化: 常に無効
- テキスト予測: 常に無効
式
<TextBox InputScope="Formula"/>
- = キーがある
- %、$、+ の各キーもある
- スペル チェック: 既定ではオン、無効にすることもできます
- 自動修正: 既定ではオン、無効にすることもできます
- 自動大文字化: 常に無効
- テキスト予測: 既定ではオン、無効にすることもできます
チャット
<TextBox InputScope="Chat"/>
- Default と同じレイアウト
- スペル チェック: 既定ではオン、無効にすることもできます
- 自動修正: 既定ではオン、無効にすることもできます
- 自動大文字化: 既定ではオン、無効にすることもできます
- テキスト予測: 既定ではオン、無効にすることもできます
名前または電話番号
<TextBox InputScope="NameOrPhoneNumber"/>
- Default と同じレイアウト
- スペル チェック: 既定ではオフ、有効にすることもできます
- 自動修正: 既定ではオフ、有効にすることもできます
- 大文字の自動設定: 既定では無効だが、有効にすることも可能 (各単語の最初の文字を大文字にする)
- テキスト予測:既定ではオフ、有効にすることもできます
Windows developer