Я использую Xamarin Forms с iOS. У меня есть редактор в режиме прокрутки. Редактор настроен на заполнение большей части страницы. Это работает.
<ContentPage.Content>
<ScrollView>
<StackLayout>
<Editor x:Name = "NotesEditor" Text = "{Binding Contact.AttendanceDetails.Notes, Mode=TwoWay}" VerticalOptions = "FillAndExpand"
HorizontalOptions = "FillAndExpand" BackgroundColor = "AliceBlue" TextChanged = "NotesEditor_TextChanged" ></Editor>
<Label x:Name = "RemainingText" VerticalOptions = "Fill" HorizontalOptions = "CenterAndExpand" HeightRequest = "40"></Label>
</StackLayout>
</ScrollView>
</ContentPage.Content>
Проблема заключается в том, что когда используется программная клавиатура, страница прокручивается, и когда пользователь начинает печатать, он изначально не видит текст, который набирает на клавиатуре, без ручной прокрутки.
Есть ли способ, которым программная клавиатура не нажимает прокрутку? Может, пользователь может сделать это вручную?
Любые мысли будут оценены.





Я не уверен в вашем варианте использования, но почему бы полностью не удалить ScrollView? Нет причин для прокрутки, если редактор работает в полноэкранном режиме. Вы можете применить маржу к метке, если хотите ее видеть.
<ContentPage.Content>
<StackLayout>
<Editor x:Name = "NotesEditor" Text = "{Binding Contact.AttendanceDetails.Notes, Mode=TwoWay}" VerticalOptions = "FillAndExpand"
HorizontalOptions = "FillAndExpand" BackgroundColor = "AliceBlue" TextChanged = "NotesEditor_TextChanged" ></Editor>
<Label x:Name = "RemainingText" VerticalOptions = "Fill" HorizontalOptions = "CenterAndExpand" HeightRequest = "40" margin = "10, 30, 10, 30"></Label>
</StackLayout>
</ContentPage.Content>
Мне нужен режим прокрутки, как будто есть текст, который даже выходит за пределы экрана и т. д., к сожалению, нет возможности прокрутки элемента управления. Исправил, ответ тоже поставлю. Спасибо за вашу помощь.
Попробуйте этот компонент, он может работать без необходимости в scrollView. Однако это не удастся, если вы включите расширение редактора.
https://devlinduldulao.pro/how-to-fix-keyboard-overlapping-or-covering-entry/
Управил исправлением, добавив событие в событие Editor Focused:
XAML:
<ScrollView x:Name = "scrollview">
<StackLayout>
<Editor x:Name = "NotesEditor" Text = "{Binding Contact.Notes, Mode=TwoWay}" VerticalOptions = "FillAndExpand"
HorizontalOptions = "FillAndExpand" BackgroundColor = "AliceBlue" TextChanged = "NotesEditor_TextChanged" Focused = "NotesEditor_Focused" ></Editor>
<Label x:Name = "RemainingText" VerticalOptions = "Fill" HorizontalOptions = "CenterAndExpand" HeightRequest = "40"></Label>
</StackLayout>
</ScrollView>
Код позади:
private void NotesEditor_Focused(object sender, FocusEventArgs e)
{
scrollview.ScrollToAsync(0, 0,true);
}
Если вам нужен редактор в режиме прокрутки, вы можете попробовать это решение.
<ContentPage>
<ScrollView >
<Grid VerticalOptions = "FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
</Grid.RowDefinitions>
<Editor VerticalOptions = "FillAndExpand"
AutoSize = "TextChanges"
-----
Grid.Row = "0" />
</Grid>
</ScrollView>
</ContentPage>
например: ваш код должен быть таким
<ContentPage.Content>
<ScrollView>
<Grid VerticalOptions = "FillAndExpand">
<Grid.RowDefinitions>
<RowDefinition Height = "Auto" />
<RowDefinition Height = "Auto" />
</Grid.RowDefinitions>
<Editor x:Name = "NotesEditor" Text = "{Binding Contact.AttendanceDetails.Notes, Mode=TwoWay}" VerticalOptions = "FillAndExpand"
HorizontalOptions = "FillAndExpand" BackgroundColor = "AliceBlue" TextChanged = "NotesEditor_TextChanged" Grid.Row = "0" ></Editor>
<Label x:Name = "RemainingText" VerticalOptions = "Fill" HorizontalOptions = "CenterAndExpand" HeightRequest = "40" Grid.Row = "1"></Label>
</Grid>
</ScrollView>
</ContentPage.Content>
Примечание. При необходимости вы можете установить hightRequest для прокрутки.
ну, ему нужна прокрутка, чтобы редактор двигался вместе с клавиатурой, когда он отображается, а не исчезает.