在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不随输入法偏移问题解决方案的更多相关文章

  1. Ubuntu系统中Sogou输入法面板问题解决方案

    好消息- Ubuntu Kylin团队与搜狗公司合作开发了“搜狗输入法 for Linux”版本,支持Ubuntu 12.04 和 Ubuntu 14.04操作系统,在Sougou官网就可以下载到,附 ...

  2. 让WPF的Popup不总置顶的解决方案

    使用WPF的Popup的时候会发现有一个问题,它总是会置顶,只要Popup的StayOpen不设置为False,它就一直呆在最顶端,挡住其他的窗口. 解决方案是继承Popup重新定义控件PopupEx ...

  3. appium输入法踩坑解决方案-----中文乱码及输入法搜索无法点击

    一.appium1.7.1 遇到的坑: 1. 在写安卓的搜索用例脚本时,发现输入内容后,搜索出现在输入法键盘原来的确认位置,定位不到手机自带输入法的"搜索"键: 2. 传入中文搜索 ...

  4. 3像素文本偏移bug 解决方案

    <style>.box1{ width:100px; height:50px; float:left; background:#dedede;_margin-right:-3px;}.bo ...

  5. WPF Popup全屏 弹出方法。解决只显示75%的问题。

    WPF Popup全屏 弹出方法.解决只显示75%的问题.   WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x ...

  6. 隐藏导航栏,偏移20PX

    1:让ViewController在NavigationBar下面开始布局. automaticallyAdjustsScrollViewInsets作用 当Controller上存在唯一一个UISc ...

  7. iOS Mapkit 定位REGcode地理位置偏移

    在iOS上,使用系统Mapkit定位,获取到的坐标会有偏移: 今有需求,用系统Mapkit定位,并Regcode出实际地理位置,修正偏移: 解决方案: 使用MapView的代理 - (void)map ...

  8. PopupWindow简单使用(一)

    1.构造函数 //方法一:     public PopupWindow (Context context)     //方法二:     public PopupWindow(View conten ...

  9. WindowsFormsHost使用问题

    WindowsFormsHost使用问题 WPF WindowsFormsHost 类 允许在 WPF 页面上承载 Windows Forms控件的元素. 命名空间:  System.Windows. ...

随机推荐

  1. CentOS 挂载iso文件配置yum源

    1.挂载iso 准备好centos的光盘镜像 挂载前的准备; mkdir -p /dev/centos mkdir -p  /mnt/local_yum 挂载 mount -o loop /opt/s ...

  2. 【25.00%】【vijos P1907】飞扬的小鸟

    描述 Flappy Bird 是一款风靡一时的休闲手机游戏.玩家需要不断控制点击手机屏幕的频率来调节小鸟的飞行高度,让小鸟顺利通过画面右方的管道缝隙.如果小鸟一不小心撞到了水管或者掉在地上的话,便宣告 ...

  3. Android app 第三方微信支付接入详解

    微信支付做了好几遍了,都没有出现什么棘手的问题,下面一一为大家分享一下,欢迎吐槽. 还是老样子,接入微信的支付要第一步添加微信支付官方的包libammsdk.jar 首先就处理略坑的一个问题,app应 ...

  4. WPF 好看的矢量图标

    原文:WPF 好看的矢量图标 本文告诉大家一个好用的网站,里面提供很多好看的图标. 本文介绍的网站是 Xamalot 里面有很多好看的图标. 例如我找到了一个好看的图标 我只需要点击下面的下载就可以了 ...

  5. WSL探索及WSLAPI调用记录

    以前都是在虚拟机上安装linux,居然刚知道win10有WSL(Windows Subsystem for Linux)可以直接在win10上安装linux,消耗低,效率高,很赞,趁着干兴趣把WSL探 ...

  6. Android官方教程翻译(1)——创建第一个Android应用

    转载请注明出处:http://blog.csdn.net/dawanganban/article/details/9822431 Building Your First App GETSTARTED ...

  7. C++ 11开发环境的搭建(Windows Platform)

    C++ 11开发环境的搭建(Windows Platform) Code::Block IDE:Code::Blocks  12.11版本号 Compiler:TDM-GCC        http: ...

  8. The bundle does not contain an app icon for iPhone / iPod Touch of exactly &#39;120x120&#39; pixels, in .pn

    xcode 6.3 载发生时的应用'Missing recommended icon file - The bundle does not contain an app icon for iPhone ...

  9. C# ?和??使用讲解

    原文:C# ?和??使用讲解 场景1:使用?定义可空类型 众所周知,C#中的值类型是不可以为null的,如果必须为null,则需要将变量定义为可空类型,如下所示: int? age = null; 场 ...

  10. 5亿英镑!Imagination同意出售给私募机构Canyon Bridge

    集微网最新消息,据外媒 FT 报道,Imagination Technologies Group Plc(以下简称“Imagination”)同意由中国背景的私募基金Canyon Bridge Cap ...