Перемещение ListView при активации клавиатуры в формах IOS xamarin

У меня проблема с Entry и ListView в Xamarin Forms. На Android он работает отлично, но на IOS, когда Focus установлен на Entry, ListView будет перемещен вверх, как на изображении:

Перемещение ListView при активации клавиатуры в формах IOS xamarin

Я пробовал использовать рендер:

Как сделать так, чтобы клавиатура не закрывала мой интерфейс, а не изменяла его размер?

но это не решило проблему, в моем случае, потому что мне нужно, чтобы ListView переместил не всю страницу! Я также обнаружил, что это известная проблема:

https://bugzilla.xamarin.com/show_bug.cgi?id=45336

https://thewikihow.com/video_1xwDRT_CnoM&feature=youtu.be

Есть предложения, как отключить движущиеся элементы при активации клавиатуры? И в этом случае мне нужно, чтобы фокус был установлен на true!

Код в XAML следующий:

<myControls:MyEntry Grid.Row = "0" Style = "{DynamicResource EntryControlStyle}" 
x:Name = "CityEntry" AutomationId = "SearchCityEntry" 
                       Placeholder = "{Binding TravelType,  Converter = {StaticResource LanguageConverter}, Mode=OneWay}"
                       Text = "{Binding Path=SearchQuery}" />

<myControls:MyListControl
Grid.Row = "1"
SeparatorVisibility = "None"
HasUnevenRows = "True"
IsRefreshing = "{Binding IsRefreshing}"
RefreshCommand = "{Binding RefreshCommand}"
x:Name = "SelectCity"
ItemsSource = "{Binding Path=SearchResults}"
 SelectedItem = "{Binding SelectedCity}">
 <myControls:MyListControl.ItemTemplate>
 <DataTemplate>
    <ViewCell>
        <ContentView BackgroundColor = "White">
            <Grid Margin = "10,10,0,10">
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width = "0.4*" />
                    <ColumnDefinition Width = "4*" />
                </Grid.ColumnDefinitions>

                <StackLayout Grid.Column = "0" HorizontalOptions = "Start"
                             VerticalOptions = "Start">
                    <Image HorizontalOptions = "Start" VerticalOptions = "Start"
                           Source = "{Binding LocationSource,Converter = {StaticResource LocationSourceEnumToImageConverter} }" />
                </StackLayout>

                <Label Grid.Column = "1" AutomationId = "SearchCityList"
                       HorizontalOptions = "StartAndExpand"
                       Text = "{Binding Path=Name, Mode=TwoWay}"
                       Style = "{DynamicResource EntryControlStyle}" />
            </Grid>
        </ContentView>
    </ViewCell>
</DataTemplate>

и код позади:

    protected override void OnAppearing()
    {            
        base.OnAppearing();
        CityEntry.Focus();
    }

    protected override void OnDisappearing()
    {
        CityEntry.Unfocus();
        base.OnDisappearing();
    }

    protected override bool OnBackButtonPressed()
    {
        CityEntry.Unfocus();
        return base.OnBackButtonPressed();
    }

Я не могу воспроизвести вашу проблему с вашим кодом. И ваши видео в другом случае, вы можете попробовать записать свои собственные видео, чтобы показать свои проблемы. Кроме того, какую версию iOS вы используете.

Anonymous 12.03.2018 11:24

@ Land Lu - MSFT Спасибо за вашу приверженность и помощь! Мне удалось решить эту проблему с переключением на Teleriks Rad List View вместо Xamarins List View. Я также не использовал последнюю версию Xamarin Forms из-за стандарта .net 1.6, который сейчас находится в приложении, поэтому я не могу подтвердить, что ошибка исправлена ​​в новых версиях. Как только у меня появились Entry и ListView, как в приведенном выше коде, возникла проблема, как на изображении.

Dan 25.03.2018 01:41

Попробуйте вызвать фокус перед base.OnAppearing ();

Márcio Souza Júnior 31.07.2018 15:57
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
279
0

Другие вопросы по теме