UWP 虚拟键盘将内容向上推
UWP virtual keyboard pushes content up
我有一个 UWP 应用程序,当虚拟键盘打开时,我的机器人脸会被推上去。当虚拟键盘打开时,是否可以让滚动查看器保持原位并让文本框保持在视图中。
我看到您可以订阅打开和隐藏事件,但这并没有给我任何 ui 元素可以保留或隐藏的选项。 https://docs.microsoft.com/en-us/windows/uwp/input-and-devices/respond-to-the-presence-of-the-touch-keyboard
<Page
x:Class="VirtualKeyboardFix.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:VirtualKeyboardFix"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer >
<Image Source="image.png" />
</ScrollViewer>
<TextBox HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="10" />
</Grid>
</Page>
是的,这就是 Justin XL 的答案。非常感谢。如果您想 post 将其作为回复而不是评论,那么我会将其标记为答案。
以防万一有人遇到同样的问题。
namespace VirtualKeyboardFix
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
InputPane.GetForCurrentView().Showing += MainPage_Showing;
InputPane.GetForCurrentView().Hiding += MainPage_Hiding;
}
private void MainPage_Showing(InputPane sender, InputPaneVisibilityEventArgs args)
{
args.EnsuredFocusedElementInView = false;
InputTextBox.Margin = new Thickness(10, 10, 10, args.OccludedRect.Height + 10);
}
private void MainPage_Hiding(InputPane sender, InputPaneVisibilityEventArgs args)
{
args.EnsuredFocusedElementInView = false;
InputTextBox.Margin = new Thickness(10, 10, 10, 10);
}
}
}
我有一个 UWP 应用程序,当虚拟键盘打开时,我的机器人脸会被推上去。当虚拟键盘打开时,是否可以让滚动查看器保持原位并让文本框保持在视图中。
我看到您可以订阅打开和隐藏事件,但这并没有给我任何 ui 元素可以保留或隐藏的选项。 https://docs.microsoft.com/en-us/windows/uwp/input-and-devices/respond-to-the-presence-of-the-touch-keyboard
<Page
x:Class="VirtualKeyboardFix.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:VirtualKeyboardFix"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer >
<Image Source="image.png" />
</ScrollViewer>
<TextBox HorizontalAlignment="Stretch" VerticalAlignment="Bottom" Margin="10" />
</Grid>
</Page>
是的,这就是 Justin XL 的答案。非常感谢。如果您想 post 将其作为回复而不是评论,那么我会将其标记为答案。
以防万一有人遇到同样的问题。
namespace VirtualKeyboardFix
{
/// <summary>
/// An empty page that can be used on its own or navigated to within a Frame.
/// </summary>
public sealed partial class MainPage : Page
{
public MainPage()
{
this.InitializeComponent();
InputPane.GetForCurrentView().Showing += MainPage_Showing;
InputPane.GetForCurrentView().Hiding += MainPage_Hiding;
}
private void MainPage_Showing(InputPane sender, InputPaneVisibilityEventArgs args)
{
args.EnsuredFocusedElementInView = false;
InputTextBox.Margin = new Thickness(10, 10, 10, args.OccludedRect.Height + 10);
}
private void MainPage_Hiding(InputPane sender, InputPaneVisibilityEventArgs args)
{
args.EnsuredFocusedElementInView = false;
InputTextBox.Margin = new Thickness(10, 10, 10, 10);
}
}
}