Wp8 Popup不随输入法偏移问题解决方案
在wp中我们经常要实现,浮窗的效果这时我们就会考虑到Popup,但是在用Popup开发我们会遇到一个非常尴尬的问题,由于Popup不在主界面的可视化树内,在Popup显示的位置在输入法面板出现的范围时,输入法面板弹出,不会随之偏移直接被输入法覆盖了。
在以前wp7.5中我们可以在输入法面板弹出时,去获得根视图的Transform获得偏移的量来偏移我们的Popup,但是在wp8中却没发现这个偏移,没办法只能各种倒腾,最后发现了一个曲线救国的方案(RT框架下)。
输入法面板消失事件
void PopupWindow_Hiding(Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args)
{
//在输入法面板消失时,将添加的偏移清除
AnimationManager.Begin(AnimationFactory.Create(HostTransform, "TranslateY", 0, TimeSpan.FromMilliseconds(100)));
}
输入法面板弹出事件
void PopupWindow_Showing(Windows.UI.ViewManagement.InputPane sender, Windows.UI.ViewManagement.InputPaneVisibilityEventArgs args)
{
if(IsShow)
{
//Showing实在输入法面板开始弹出时触发
//下面开始记录Window.Current.Content 0,0点相对于屏幕的坐标
var last = Window.Current.Content.TransformToVisual(null).TransformPoint(new Windows.Foundation.Point(0, 0));
EventHandler<object> handler = null;//只有InputPane显示事件,只能勉强用LayoutUpdated事件了。。。
//再注册LayoutUpdated事件接着获取与Window.Current.Content 0,0点相对于屏幕的坐标,与之前获得的坐标对比
(Window.Current.Content as FrameworkElement).LayoutUpdated += handler= (s, e) =>
{
//当0,0到屏幕的映射current不等于last时,就认为InputPane打开完成^_^
var current = Window.Current.Content.TransformToVisual(null).TransformPoint(new Windows.Foundation.Point(0, 0));
if(current != last)//发现去之前的坐标不相等,认为已发生偏移,对当前视图添加偏移
{
current.Y = current.Y - last.Y - InputOffset;
(Window.Current.Content as FrameworkElement).LayoutUpdated -= handler;
(HostTransform as Windows.UI.Xaml.Media.CompositeTransform).TranslateY = current.Y;
}
};
}
}
Wp8 Popup不随输入法偏移问题解决方案的更多相关文章
- Ubuntu系统中Sogou输入法面板问题解决方案
好消息- Ubuntu Kylin团队与搜狗公司合作开发了“搜狗输入法 for Linux”版本,支持Ubuntu 12.04 和 Ubuntu 14.04操作系统,在Sougou官网就可以下载到,附 ...
- 让WPF的Popup不总置顶的解决方案
使用WPF的Popup的时候会发现有一个问题,它总是会置顶,只要Popup的StayOpen不设置为False,它就一直呆在最顶端,挡住其他的窗口. 解决方案是继承Popup重新定义控件PopupEx ...
- appium输入法踩坑解决方案-----中文乱码及输入法搜索无法点击
一.appium1.7.1 遇到的坑: 1. 在写安卓的搜索用例脚本时,发现输入内容后,搜索出现在输入法键盘原来的确认位置,定位不到手机自带输入法的"搜索"键: 2. 传入中文搜索 ...
- 3像素文本偏移bug 解决方案
<style>.box1{ width:100px; height:50px; float:left; background:#dedede;_margin-right:-3px;}.bo ...
- WPF Popup全屏 弹出方法。解决只显示75%的问题。
WPF Popup全屏 弹出方法.解决只显示75%的问题. WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x ...
- 隐藏导航栏,偏移20PX
1:让ViewController在NavigationBar下面开始布局. automaticallyAdjustsScrollViewInsets作用 当Controller上存在唯一一个UISc ...
- iOS Mapkit 定位REGcode地理位置偏移
在iOS上,使用系统Mapkit定位,获取到的坐标会有偏移: 今有需求,用系统Mapkit定位,并Regcode出实际地理位置,修正偏移: 解决方案: 使用MapView的代理 - (void)map ...
- PopupWindow简单使用(一)
1.构造函数 //方法一: public PopupWindow (Context context) //方法二: public PopupWindow(View conten ...
- WindowsFormsHost使用问题
WindowsFormsHost使用问题 WPF WindowsFormsHost 类 允许在 WPF 页面上承载 Windows Forms控件的元素. 命名空间: System.Windows. ...
随机推荐
- Centos root权限的变化
方法一:更改 /etc/sudoers 文件, 找到以下一行,把前面的凝视(#)去掉 ## Allows people in group wheel to run all commands %whee ...
- Video processing systems and methods
BACKGROUND The present invention relates to video processing systems. Advances in imaging technology ...
- vultr的80端口?
1.查看防火墙版本号firewall-cmd --version2.查看防火墙状态firewall-cmd --state3.添加80端口的权限firewall-cmd --zone=public - ...
- android studio中文乱码各种情况的解决办法
情况一:编辑器内的中文注释乱码. 解决办法:在界面的右下角找到 UTF-8 ,单击之,在弹出的列表中选中GBK 在弹出框内选中Reload 总结:导致这样的原因是你这个.java文件本身是GBK编码的 ...
- Bit error testing and training in double data rate (ddr) memory system
DDR PHY interface bit error testing and training is provided for Double Data Rate memory systems. An ...
- android 流量统计
1 android通过架构流量统计TrafficStats类可以直接获得 获得总流量受理TrafficStats.getTotalRxBytes(), 获得总传出流量TrafficSt ...
- UVALive 6531 Go up the ultras 单调栈+RMQ
题目链接:点击打开链接 题意: 给定n座山 以下n个数字表示n座山的高度 若这座山u合法,则要满足: 1.若u的左边存在比u高的山,设v是u左边距离u近期的且严格比u高的山,在[v,u]之间至少有一座 ...
- 斯托克斯定理(Stokes' theorem)
1. 几种形式 ∮∂SPdx+Qdy+Rdz=∬S∣∣∣∣∣∣cosα∂∂xPcosβ∂∂yQcosγ∂∂zR∣∣∣∣∣∣dS ∮∂Ωw=∬Ωdw 左边是内积: 右边是外积: 物理上的应用: ∮∂SE ...
- ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程
原文:ASP.NET Core 基础教程总结 - ASP.NET Core 基础教程 - 简单教程,简单编程 ASP.NET Core 基础教程总结 ASP.NET Core 基础教程总算是有了个简单 ...
- 构建自己的PHP框架(日志)
完整项目地址:https://github.com/Evai/Aier 日志在程序开发中有着十分重要的作用,帮助开发者更快的找到程序错误并即时处理.下面制作一个非常简单的记录日志类. 在 servic ...