2017-01-20 2 views
1

Ich habe eine Windows 10 mobile uwp App und ich habe zwei Probleme.Windows 10 uwp weiche Tastatur verstecken, auch wenn ich den Fokus auf eine Steuerung setze

Zuerst habe ich den Fokus auf die Steuerung in der App gesetzt. Ich mache dies, indem ich den gemeinsamen Anruf erfolgreich

es gibt jedoch einige Fälle, in denen dies nicht funktioniert. Meistens aber zum Beispiel, wenn meine Seite geladen wird, versuche ich einen ersten Fokus in einem der Felder zu setzen und es funktioniert nicht. Ich habe diesen Anruf an zwei Stellen versucht. Zuerst im Konstruktor für die Seite, nach InitializeComponenets und auch in der OnNavigatedTo-Methode. Wo ist der beste Ort, um dies zu nennen, und aus welchen Gründen scheint es nicht zu funktionieren, besonders wenn eine neue Seite instanziiert wird?

Zweitens, im Zusammenhang mit der Einstellung Fokus. Ich habe ein Textfeld auf meiner Benutzeroberfläche, das ich mit dem gleichen programmatischen Fokus-Aufruf, den ich oben aufgelistet habe, kontrolliere. In diesem Fall wird jedoch die Bildschirmtastatur angezeigt. Ich möchte nicht, dass es angezeigt wird, wenn ich den Fokus programmatisch festlege, aber dann zeige, wenn der Benutzer das Feld auswählt. Das Szenario ist, ich habe einen Barcode-Scanner. Wenn die Seite geladen wird, setze ich den Fokus auf den Text im Textfeld und es ist daher für mich bereit, den Text in dem Textfeld basierend auf dem Barcode-Scanner-Ergebnis aus dem Code zu setzen. Es gibt kaum eine Notwendigkeit für den Benutzer, in dieses Feld zu tippen. Daher brauche oder möchte ich nicht, dass die Tastatur Immobilien anzeigt und aufnimmt. Es gibt einen seltenen Fall, wenn ich ihnen erlaube, den Text noch manuell einzugeben, zum Beispiel, wenn der Barcode nicht gelesen wird. Sie würden dann das Steuerelement auswählen (obwohl es möglicherweise bereits programmgesteuert den Fokus hat), das den Fokus wieder einstellen sollte, aber stattdessen als Cursor, Touch oder etwas und dann möchte ich die Soft-Tastatur anzeigen.

Was ist der beste Weg, dies zu tun?

Danke!

+0

[Arbeiten Sie zusammen] (http://stackoverflow.com/q/41598350/2681948)? ;) – Romasz

+0

Ha, nein wir sind nicht. Lustig ist, dass der Beitrag nie in allen meinen Suchanfragen auftauchte. Nur ironisch, denke ich. Aber, danke für die Verknüpfung, scheint eine sehr gute Lösung zu sein, die ich auch versuchen werde. Vielen Dank! –

+0

Wie für die Anzeige der Tastatur können Sie versuchen * InputPane.TryShow() *, wenn Sie es brauchen, ich denke, mit der Kombination/Änderung der Antwort auf die obige Frage, kann es möglich sein zu erreichen, was Sie wollen. – Romasz

Antwort

3

Ich denke, der beste Ort zu rufen Focus() ist in Loaded Event-Handler der gleichen Kontrolle, die Sie versuchen zu konzentrieren. Wenn dieses Steuerelement vollständig geladen ist, bedeutet dies, dass es für die Interaktion bereit ist, einschließlich Fokussierung.

Um zu verhindern, dass die Bildschirmtastatur angezeigt wird, verfügt die Klasse TextBox über die Eigenschaft PreventKeyboardDisplayOnProgrammaticFocus. Versuchen Sie es auf true einzustellen, dies sollte Ihr Problem lösen.

1

soweit nichts anderes konzentrieren als die TextBox sowieso nicht für mich arbeiten, fand ich eine gute Lösung:

Ich rief: versteckt wird

using Windows.UI.ViewManagement; 

InputPane.GetForCurrentView().TryHide(); 

und die Tastatur.