Usar o escopo de entrada para alterar o teclado virtual

Para ajudar os usuários a inserir dados usando o teclado virtual ou SIP (Soft Input Panel), você pode configurar o escopo de entrada do controle de texto para corresponder ao tipo de dado que se espera que o usuário insira.

APIs importantes

O teclado virtual pode ser usado para entrada de texto, quando o aplicativo é executado em um dispositivo com tela sensível ao toque. O teclado virtual é invocado quando o usuário toca em um campo de entrada editável, como um TextBox ou um RichEditBox. É possível tornar a entrada de dados muito mais rápida e fácil para os usuários em seu aplicativo definindo o escopo de entrada do controle de texto para corresponder ao tipo de dados que o usuário deve inserir. O escopo de entrada oferece uma dica para o sistema sobre o tipo de entrada de texto esperado pelo controle, para que o sistema possa fornecer um layout de teclado virtual especializado para o tipo de entrada.

Por exemplo, se uma caixa de texto for usada somente para a inserção de um PIN de 4 dígitos, defina a propriedade InputScope como Number. Isso informa o sistema para mostrar o layout do teclado numérico, facilitando a inserção do PIN.

Importante

  • Essas informações se aplicam somente ao SIP. Elas não se aplicam a teclados de hardware ou ao teclado virtual disponível nas opções de Facilidade de Acesso do Windows.
  • O escopo de entrada não faz com que validações de entrada sejam executadas e não impede que o usuário forneça entradas por meio de um teclado de hardware nem de outro dispositivo de entrada. Você ainda é o responsável pela validação da entrada em seu código, conforme necessário.

Alterar o escopo de entrada de um controle de texto

Os escopos de entrada disponíveis para o aplicativo são membros da enumeração InputScopeNameValue. É possível definir a propriedade InputScope de um TextBox ou RichEditBox como um desses valores.

Importante

A propriedade InputScope em PasswordBox oferece suporte apenas aos valores Password e NumericPin. Qualquer outro valor é ignorado.

Aqui, é possível alterar o escopo de entrada de várias caixas de texto para corresponder aos dados esperados para cada caixa de texto.

Para alterar o escopo de entrada em XAML

  1. No arquivo XAML da página, localize a marca do controle de texto que você deseja alterar.

  2. Adicione o atributo InputScope à tag e especifique o valor InputScopeNameValue que corresponde à entrada esperada.

    Veja aqui algumas caixas de texto que podem aparecer em um formulário de contato do cliente comum. Com o InputScope definido, um teclado virtual com um layout adequado para os dados é exibido para cada caixa de texto.

    <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>
    

Para alterar o escopo de entrada no código

  1. No arquivo XAML da página, localize a marca do controle de texto que você deseja alterar. Se ele não estiver definido, defina o atributo x:Name para que poder fazer referência ao controle no código.

    <TextBox Header="Telephone Number" x:Name="phoneNumberTextBox"/>
    
  2. Instancie um novo objeto InputScope.

    InputScope scope = new InputScope();
    
  3. Instancie um novo objeto InputScopeName.

    InputScopeName scopeName = new InputScopeName();
    
  4. Defina a propriedade NameValue do objeto InputScopeName como um valor da enumeração InputScopeNameValue.

    scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
    
  5. Adicione o objeto InputScopeName à coleção Names do objeto InputScope.

    scope.Names.Add(scopeName);
    
  6. Defina o objeto InputScope como o valor da propriedade InputScope do controle de texto.

    phoneNumberTextBox.InputScope = scope;
    

Veja aqui o código inteiro junto.

InputScope scope = new InputScope();
InputScopeName scopeName = new InputScopeName();
scopeName.NameValue = InputScopeNameValue.TelephoneNumber;
scope.Names.Add(scopeName);
phoneNumberTextBox.InputScope = scope;

As mesmas etapas podem ser condensadas neste código abreviado.

phoneNumberTextBox.InputScope = new InputScope() 
{
    Names = {new InputScopeName(InputScopeNameValue.TelephoneNumber)}
};

Previsão de texto, verificação ortográfica e correção automática

Os controles TextBox e RichEditBox têm várias propriedades que influenciam o comportamento do SIP. Para oferecer a melhor experiência para os usuários, é importante entender como essas propriedades afetam a entrada de texto usando o toque.

  • IsSpellCheckEnabled - Quando a verificação ortográfica está habilitada para um controle de texto, o controle interage com o mecanismo de verificação ortográfica do sistema para marcar palavras que não são reconhecidas. É possível tocar em uma palavra para ver uma lista de correções sugeridas. Por padrão, a verificação ortográfica está habilitada.

    Para o escopo de entrada Padrão, essa propriedade também permite o uso de maiúsculas automático na primeira palavra de uma frase e a correção automática de palavras à medida que você digita. Esses recursos de correção automática podem ser desabilitados em outros escopos de entrada. Para obter mais informações, consulte as tabelas mais adiante neste tópico.

  • IsTextPredictionEnabled - Quando a previsão de texto está habilitada para um controle de texto, o sistema mostra uma lista de palavras que você possa estar começando a digitar. É possível selecionar na lista para não precisar digitar a palavra inteira. Por padrão, a previsão de texto está habilitada.

    A previsão de texto pode ser desabilitada se o escopo de entrada for diferente de Padrão, mesmo se a propriedade IsTextPredictionEnabled for true. Para obter mais informações, consulte as tabelas mais adiante neste tópico.

  • PreventKeyboardDisplayOnProgrammaticFocus - Quando essa propriedade é true, ela impede que o sistema mostre o SIP quando o foco é definido programaticamente em um controle de texto. Em vez disso, o teclado é mostrado somente quando o usuário interage com o controle.

Índice do teclado virtual para Windows

Essas tabelas mostram os layouts SIP (Painel de Entrada Flexível) do Windows para valores de escopo de entrada comuns. O efeito do escopo de entrada nos recursos habilitados pelas propriedades IsSpellCheckEnabled e IsTextPredictionEnabled é listado para cada escopo de entrada. Esta não é uma lista abrangente de escopos de entrada disponíveis.

Dica

É possível alternar a maioria dos teclados sensíveis ao toque entre um layout alfabético e um layout de números e símbolos pressionando a tecla &123 para alterar para o layout de números e símbolos e pressionando a tecla abcd para alterar para o layout alfabético.

Default

<TextBox InputScope="Default"/>

O teclado virtual padrão do Windows.

Default Windows touch keyboard

  • Verificação ortográfica: habilitada se IsSpellCheckEnabled = true, e desabilitada se IsSpellCheckEnabled = false
  • Correção automática: habilitada se IsSpellCheckEnabled = true, e desabilitada se IsSpellCheckEnabled = false
  • Uso de maiúsculas automático: habilitado se IsSpellCheckEnabled = true, e desabilitado se IsSpellCheckEnabled = false
  • Previsão de texto: habilitada se IsTextPredictionEnabled = true, e desabilitada se IsTextPredictionEnabled = false

CurrencyAmountAndSymbol

<TextBox InputScope="CurrencyAmountAndSymbol"/>

O layout do teclado padrão de números e símbolos.

Windows touch keyboard for currency

  • Inclui teclas esquerda/direita da página para exibir mais símbolos
  • Verificação ortográfica: habilitada por padrão, pode ser desabilitada
  • Correção automática: habilitada por padrão, pode ser desabilitada
  • Uso de maiúsculas automático: sempre desabilitado
  • Previsão de texto: habilitada por padrão, pode ser desabilitada

Url

<TextBox InputScope="Url"/>

Windows touch keyboard for URLs

  • Inclui as teclas .com e go key (Go). Pressione e mantenha pressionada a tecla .com para exibir opções adicionais (.org, .net e sufixos específicos da região)
  • Inclui as teclas :, - e /
  • Verificação ortográfica: desabilitada por padrão, pode ser habilitada
  • Correção automática: desabilitada por padrão, pode ser habilitada
  • Uso de maiúsculas automático: desabilitado por padrão, pode ser habilitado
  • Previsão de texto: desabilitada por padrão, pode ser habilitada

EmailSmtpAddress

<TextBox InputScope="EmailSmtpAddress"/>

Windows touch keyboard for email addresses

  • Inclui as teclas @ e .com. Pressione e mantenha pressionada a tecla .com para exibir opções adicionais (.org, .net e sufixos específicos da região)
  • Inclui as teclas _ e -
  • Verificação ortográfica: desabilitada por padrão, pode ser habilitada
  • Correção automática: desabilitada por padrão, pode ser habilitada
  • Uso de maiúsculas automático: desabilitado por padrão, pode ser habilitado
  • Previsão de texto: desabilitada por padrão, pode ser habilitada

Número

<TextBox InputScope="Number"/>

Windows touch keyboard for numbers

  • Verificação ortográfica: habilitada por padrão, pode ser desabilitada
  • Correção automática: habilitada por padrão, pode ser desabilitada
  • Uso de maiúsculas automático: sempre desabilitado
  • Previsão de texto: habilitada por padrão, pode ser desabilitada

TelephoneNumber

<TextBox InputScope="TelephoneNumber"/>

Windows touch keyboard for telephone numbers

  • Verificação ortográfica: habilitada por padrão, pode ser desabilitada
  • Correção automática: habilitada por padrão, pode ser desabilitada
  • Uso de maiúsculas automático: sempre desabilitado
  • Previsão de texto: habilitada por padrão, pode ser desabilitada

<TextBox InputScope="Search"/>

Windows touch keyboard for search

  • Inclui a tecla termo de pesquisa em vez da tecla Enter
  • Verificação ortográfica: habilitada por padrão, pode ser desabilitada
  • Correção automática: habilitada por padrão, pode ser desabilitada
  • Uso de maiúsculas automático: sempre desabilitado
  • Previsão de texto: habilitada por padrão, pode ser desabilitada

SearchIncremental

<TextBox InputScope="SearchIncremental"/>

Windows touch keyboard for incremental search

  • Mesmo layout que Padrão
  • Verificação ortográfica: desabilitada por padrão, pode ser habilitada
  • Correção automática: sempre desabilitada
  • Uso de maiúsculas automático: sempre desabilitado
  • Previsão de texto: sempre desabilitada

Fórmula

<TextBox InputScope="Formula"/>

Windows touch keyboard for formula

  • Inclui a tecla =
  • Também inclui as teclas %, $ e +
  • Verificação ortográfica: habilitada por padrão, pode ser desabilitada
  • Correção automática: habilitada por padrão, pode ser desabilitada
  • Uso de maiúsculas automático: sempre desabilitado
  • Previsão de texto: habilitada por padrão, pode ser desabilitada

Chat

<TextBox InputScope="Chat"/>

Default Windows touch keyboard

  • Mesmo layout que Padrão
  • Verificação ortográfica: habilitada por padrão, pode ser desabilitada
  • Correção automática: habilitada por padrão, pode ser desabilitada
  • Uso de maiúsculas automático: habilitado por padrão, pode ser desabilitado
  • Previsão de texto: habilitada por padrão, pode ser desabilitada

NameOrPhoneNumber

<TextBox InputScope="NameOrPhoneNumber"/>

Default Windows touch keyboard

  • Mesmo layout que Padrão
  • Verificação ortográfica: desabilitada por padrão, pode ser habilitada
  • Correção automática: desabilitada por padrão, pode ser habilitada
  • Uso de maiúsculas automático: desabilitado por padrão, pode ser habilitado (a primeira letra de cada palavra é maiúscula)
  • Previsão de texto: desabilitada por padrão, pode ser habilitada