Xamarin формы: верхний стек не отображается в пользовательском интерфейсе, когда клавиатура включена - PullRequest
0 голосов
/ 03 декабря 2018

Мой Xaml:

<StackLayout
   Orientation="Vertical">

   <StackLayout
      Orientation="Horizontal"> 
      //Group labels and back arrow
   </StackLayout>

   <ListView>
      //Message list
   </ListView>

   <Grid>
   //Plus symbol,Editor and send icon
   </Grid>

</StackLayout>

Снимок экрана:

enter image description here

Выпуск:

На обычном экране сверху есть полоса (обведена красным).При нажатии на редактор в нижней верхней панели скрывается.Мне нужен верхний бар всегда сверху. Эта проблема только в части IOS, в Android эта функция работает нормально.Как я могу исправить эту проблему?

Ответы [ 2 ]

0 голосов
/ 03 января 2019

Как на картинке в вопросе, моя мягкая клавиатура всегда касается редактора.Поэтому я добавил специальный редактор для своего редактора, чтобы решить эту проблему. После добавления этого пользовательского рендерера верхняя панель всегда торчит в верхней части страницы.

Я использовал следующий пользовательский рендерер для решения проблемы наложения клавиатуры:

using System;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
using HBIClientFacingApp;
using HBIClientFacingApp.iOS;

[assembly:ExportRenderer( typeof(CustomEditor), typeof(CustomEditorRenderer))]
namespace YourNameSpace.iOS
{
    public class CustomEditorRenderer: EditorRenderer
    {
        public ChatEntryRenderer()
        {   
            UIKeyboard.Notifications.ObserveWillShow ((sender, args) => {

            if (Element != null)
            {
                Element.Margin = new Thickness(0,0,0, args.FrameEnd.Height); //push the entry up to keyboard height when keyboard is activated
            }
        });

        UIKeyboard.Notifications.ObserveWillHide ((sender, args) => {

            if (Element != null)
            {
                   Element.Margin = new Thickness(0); //set the margins to zero when keyboard is dismissed
            }

        }); 
    }
  }
}
0 голосов
/ 03 декабря 2018

Это особенность iOS, что пользовательский интерфейс настроен вверх.Вы можете уменьшить (или сохранить) вид с помощью пользовательского средства визуализации.

Проверьте это замечательное объяснение .

А также этот кодовый код дляпользовательский рендерер клавиатуры на iOS.

...