Xamarin.Forms на iOS: уменьшите высоту страницы вместо того, чтобы сдвигать ее вверх, когда появляется программная клавиатура - PullRequest
0 голосов
/ 29 апреля 2019

Возникла проблема с тем, что программная клавиша перекрывает поле ввода, расположенное внизу.

enter image description here

XAML код:

<ContentPage.Content>
    <AbsoluteLayout VerticalOptions="Fill">
        <ScrollView AbsoluteLayout.LayoutFlags="All" AbsoluteLayout.LayoutBounds="0,0,1,0.9">
            <Label Text="Heading" />
        </ScrollView>
        <Entry x:Name="SearchEntry" AbsoluteLayout.LayoutBounds=".5,1,1,.1" AbsoluteLayout.LayoutFlags="All" Placeholder="Suchen..." ReturnType="Done" />            
    </AbsoluteLayout>
</ContentPage.Content>

Я установил KeyboardOverlap ! Плагин с помощью Nuget. Он сдвигает всю страницу вверх до тех пор, пока запись снова не станет видимой. Запись видима, но верхняя часть страницы больше не видна, потому что она сдвинута вверх.

Другим часто упоминаемым решением является упаковка содержимого страниц в ScrollView. Поскольку мне абсолютно необходим AbsoluteLayout в качестве корневого содержимого, это, к сожалению, не решение.

Я ищу решение, которое уменьшает высоту страницы, а не просто увеличивает ее, когда появляется программная клавиша.

Зачем мне это нужно? Страница заполнена динмически с результатами поиска, основанными на вводе записи. Если результатов мало, они не видны из-за смещения страницы вверх. Пользователь может подумать, что нет результатов поиска. Отображение текста типа «Нет результатов поиска». Выше запись будет простым решением, но это не вариант здесь.

1 Ответ

0 голосов
/ 30 апреля 2019

Использование этого CustomRenderer класса в проекте iOS вместо плагина KeyboardOverlap сделало свое дело.

Не забудьте настроить строку 14 с вашими конкретными именами классов страниц, где вынужен функционал.В противном случае средство визуализации вызывается для всех страниц вашего приложения!

Большое спасибо Джеку Хуа - MSFT !

...