目前我正在使用 Windows Phone 8。
当文本框在弹出窗口中获得焦点时,它会隐藏在键盘下方。我试过从弹出窗口的 VerticalOffset 中减去键盘高度。但是由于键盘的建议栏,文本框仍然隐藏在键盘下方。有什么方法可以获取键盘的建议栏的高度?
谢谢!!!
最佳答案
不在 Windows Phone 8 Silverlight 应用中
如果您升级到 Windows Phone 8.1 Silverlight 应用程序(或运行时,但这是一个更大的更新),那么您可以使用 InputPane 类并在 Showing 事件中检查其 OccludedRect 属性。
只要键盘改变它所覆盖的内容,就会触发此事件,因此您将在键盘首次打开时获得一次事件,然后在建议栏向上滑动时再次获得该事件。
protected override void OnNavigatedTo(NavigationEventArgs e)
{
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing += MainPage_Showing;
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Hiding += MainPage_Hiding;
}
protected override void OnNavigatedFrom(NavigationEventArgs e)
{
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Showing -= MainPage_Showing;
Windows.UI.ViewManagement.InputPane.GetForCurrentView().Hiding -= MainPage_Hiding;
}
void MainPage_Hiding(Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args)
{
Debug.WriteLine("Hiding and occluding {0}", sender.OccludedRect.Height);
}
void MainPage_Showing(Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args)
{
Debug.WriteLine("Showing and occluding {0}", sender.OccludedRect.Height);
}
根据您的布局,这在 WP8.1 上可能不是必需的。我在 WP8.1 模拟器上测试了一个 WP8 应用程序,我的 Popup 中的文本框滑出了建议栏的方式以及键盘的方式。如果您的布局足够复杂而无法正常工作(例如,如果您还需要将内容移动到焦点文本框下方),那么您可以自己处理 Showing 来移动内容,然后设置 InputPaneVisibilityEventArgs.EnsuredFocusedElementInView 让 InputPane 也不要移动内容本身。
关于c# - 如何获得Windows Phone 8键盘建议栏的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25886907/