Unter Verwendung von Xamarin-Formularen betrachten Sie den unten stehenden Xaml.
%Vor%Dies rendert ein Bild, einen Editor und eine Schaltfläche zum Speichern. Das Bild ist im 4x3 Bildverhältnis und deckt etwa ein Drittel der verfügbaren Bildschirmhöhe ab. Der Editor wird unten gerendert.
Das Problem ist, dass die Tastatur den Editor in iOS abdeckt. Ein Standard-iOS-Problem normalerweise.
Die Frage ist: Wie kann Xamarin Forms damit umgehen?
Danke
// Johan
Um automatisches Scrollen für Editoren und Einträge mit Xamarin.Forms zu erhalten, müssen Sie normalerweise Ihre Ansicht, in diesem Fall das StackLayout, in eine ScrollView packen:
%Vor%So sollte es funktionieren, aber ab heute (Juni 2014) gibt es einen Fehler, der verhindert, dass dies vollständig mit dem Editor funktioniert (es funktioniert gut mit Einträgen). Das Problem ist bekannt und wird bearbeitet.
[UPDATE 2014-11-20] Das Problem wurde behoben und wird in der nächsten Version von XF 1.3 verfügbar sein.
Ich bin gerade über diese Frage gestolpert, als ich eine winzige Chat-Anwendung geschrieben habe, die im Grunde eine scrollbare Nachrichtenliste, einen Texteintrag und eine Senden-Schaltfläche enthält:
Das Problem mit der zuvor veröffentlichten Lösung besteht darin, dass Sie zwei Scroll-Ansichten verschachteln müssen, was von Xamarin.Forms-Dokumentation . Um zu verhindern, dass die Tastatur den Eintrag versteckt, habe ich folgenden Hack gefunden:
Ich füge ein placeholder
am Ende des Haupt-Stack-Layouts hinzu. Abhängig davon, ob der Eintrag fokussiert ist (d. H. Die Tastatur ist sichtbar oder nicht), wird die Höhe des Platzhalters auf 0 oder die Tastaturhöhe gesetzt.
Natürlich ist das nicht perfekt. Vor allem die hart codierte Tastaturhöhe sollte eleganter implementiert werden. Und wahrscheinlich sollten Sie es nur auf iOS anwenden, nicht auf Android.
Manchmal können Sie Ihre Hauptansicht nicht in eine Scrollview einfügen. In diesen Fällen können Sie dies implementieren, indem Sie die Tastaturereignisse des iOS-Projekts behandeln und sie an die Forms-Ebene übergeben. Android kümmert sich um sich selbst.
%Vor%Dann auf der Formularebene:
%Vor%Wenn Sie in einem Stacklayout arbeiten und die Ansicht über der Tastatur anheben möchten, können Sie einen Abstandhalter mit einer Höhe von 0 an der Unterseite des Stapels platzieren. Stellen Sie es dann auf die Höhe der Tastatur ein, wenn das Ereignis "Keyboard Changed" ausgelöst wird.
%Vor%Wenn Sie mit einem Listview arbeiten, können Sie damit umgehen, indem Sie Ihre Ansicht um den Betrag überlagern, mit dem sie überlappen würden.
%Vor%Listviews müssen anders gehandhabt werden, da die Höhe automatisch von Forms angepasst wird und ein Abstandhalterergebnis zur Korrektur verwendet wird.
Beispiel hier: Ссылка
Erweitern Sie die Antwort von @Falko. Sie können die Plattform für iOS überprüfen, da Android dies erwartungsgemäß nativ behandelt.
Ich habe dies auch über diese Antwort auf die Seite zur schnellen und schmutzigen Ausrichtung hinzugefügt.
%Vor%Jedenfalls verstehe ich, dass Xamarin demnächst einige Lösungen dafür hinzufügen wird. Für jetzt, aber ...
%Vor% Sei vorsichtig, raisekeyboard
wurde nur für einen Eintrag in der Anwendung implementiert, wenn du einen neuen Eintrag hinzufügst, wird KeyboardHelper.KeyboardChanged
schießen, wenn der Fokus auf irgendeinem Eintrag liegt.
Die Verwendung von ScrollView, wie oben erwähnt, behebt Probleme in iOS und teilweise Korrekturen in Android. Um das Problem in Android vollständig zu beheben, fand ich eine andere einfache und nette Ergänzung.
Nur in Android ersetze ich Xamarin Forms Editor mit Android-spezifischen TextEdit-Steuerelement. Also habe ich in meinem Page-Konstruktor folgenden Code nur für Android.
%Vor%Sie müssen auch androidspezifische Namespaces nach Bedarf hinzufügen.
%Vor%Tags und Links ios xamarin.ios xamarin.forms xamarin