2010-09-26 10 views
3

J'ai un formulaire de saisie simple qui se compose d'une seule zone de texte et d'un bouton "OK/Annuler". Pour sauver l'utilisateur quelques taps, j'apporte l'attention à la zone de texte quand la page est montrée, ainsi le clavier apparaît. À ce stade, je veux que le bouton «Retour» se comporte comme annuler et revenir en arrière si pressé, mais ce que la chose fait réellement, il supprime juste le focus de la zone de texte sans même déclencher l'événement BackKeyPress. Lors de la prochaine pression, il revient en arrière, mais c'est deux clics au lieu d'un.Comment faire pour revenir en arrière lorsque le clavier à l'écran est visible?

J'ai donc deux questions

  1. Comment faire le bouton de retour « revenir en arrière », même lorsque le clavier est visible? Est-ce que j'essaie de faire quelque chose de mal du point de vue de la conception d'interaction de WP7?

Répondre

2

Ce que vous pouvez faire est de gérer la méthode KeyUp de la zone de texte. Lorsque vous appuyez sur une touche, vérifiez s'il s'agit de la touche de retour arrière du matériel. Dans mon test, la clé de retour matériel a un PlatformKeyCode de 27. Je ne suis pas sûr si cela change entre les périphériques matériels. Cependant, en supposant qu'il ne le fait pas, vous pouvez faire ce qui suit:

private void TextBox_KeyUp(object sender, System.Windows.Input.KeyEventArgs e) 
    { 
     if(e.PlatformKeyCode == 27) 
     { 
      //Navigation code 
     } 

    } 

Quant à savoir si cela est une bonne idée, je ne suis pas sûr. La principale fonction de la touche de retour, en ce qui concerne le clavier à l'écran, est de fermer le clavier. C'est ce que les utilisateurs vont surtout expérimenter à travers différentes applications, c'est ce qu'ils pourraient attendre de votre part. Cependant, puisque vous êtes SIP est automatiquement affiché, je suppose que vous pourriez soutenir qu'il fait presque partie de la mise en page elle-même. Je ne pouvais rien voir dans le UI Guidelines à ce sujet, mais vous devriez avoir une lecture au cas où j'ai raté quelque chose.

+0

Pourquoi downvote? – keyboardP

+0

L'événement KeyUp n'est pas déclenché lorsque vous appuyez sur le bouton de retour matériel. –

+0

@MihaiDamian - La réponse a presque 5 ans. Je crois que la dernière façon est de gérer l'événement BackPressed https://msdn.microsoft.com/en-us/library/windows/apps/xaml/dn639128.aspx – keyboardP

1

Avez-vous vérifié si vous pouvez remplacer la méthode OnBackKeyPressed?

En termes de ce que vous êtes autorisé à faire avec la touche Retour, à partir des directives de certification d'application:

5.2.4 Utilisation du bouton Précédent

Pour maintenir une expérience utilisateur cohérente, la Le bouton Retour ne doit être utilisé que pour la navigation arrière dans l'application.

a. Appuyer sur le bouton Retour du premier écran d'une application doit quitter l'application.

b. Appuyer sur le bouton Retour doit retourner l'application à la page précédente.

c. Si la page en cours affiche un menu contextuel ou une boîte de dialogue, l'appui sur le bouton Retour doit fermer le menu ou la boîte de dialogue et annuler la navigation vers l'arrière à la page précédente.

d. Pour les jeux, lorsque le bouton Précédent est enfoncé pendant le jeu, le jeu peut choisir de présenter un menu contextuel ou une boîte de dialogue de pause ou de diriger l'utilisateur vers l'écran de menu précédent. Si vous appuyez de nouveau sur le bouton Précédent alors que le menu contextuel ou la boîte de dialogue est en pause, le menu ou la boîte de dialogue se ferme.

Cette fonction SO question peut également être utile ....

Je vais être d'accord avec keyboardP que vous ne devriez pas vraiment remplacer le comportement par défaut de la façon dont le SIP interagit avec le bouton matériel en arrière, mais vous pouvez toujours le soumettre et de voir ce qui se passe :)

Questions connexes