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不随输入法偏移问题解决方案,布布扣,bubuko.com

时间: 2024-10-13 03:16:03

Wp8 Popup不随输入法偏移问题解决方案的相关文章

cocos2dx - wp8项目配置遇到的问题及解决方案

在这篇文章中,我们将来构建cocos2dx-wp8的环境配置,首先我们需要在windows+vs环境下安装cocos2dx. 如果你对windows+vs环境下安装cocos2dx还不熟悉,请参考:Win7(64位)下 vs2012 + cocos2dx2.2配置 然后我们找到E:\cocos2d-x-2.2.5\samples\Cpp\HelloCpp\proj.wp8-xaml(我这里cocos2dx安装在E盘)下面的HelloCpp项目文件,在VS中打开. 我们会看见HelloCpp和He

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

好消息- Ubuntu Kylin团队与搜狗公司合作开发了“搜狗输入法 for Linux”版本,支持Ubuntu 12.04 和 Ubuntu 14.04,在搜狗官网就可以下载到,附上地址:http://pinyin.sogou.com/linux/ 以前在windows一直用搜狗输入法,所以Ubuntu的内置输入法用得不太习惯,现在终于有顺手的输入法了,开心- 但是经过一段时间的试用,遇到了输入法面板问题,ctrl+space 调出输入法就会弹出一个对话框提示要重启输入法面板,于是多方搜寻,

高通针对对讲机输入法的字库解决方案 — 支持多国语言字库,多字号字库;

数字对讲机通信的优势非常明显,以直通模式为例,DMR采用双时隙工作时,其中一个时隙用来通话.发送短信和传送图像,另一个时隙则可用作控制信道使用,这个时隙可对传输的业务进行监视.暂停.遥毙.强插等控制,而这些是传统的模拟对讲机无法实现的. 目前市场上面的数字对讲机大多数采用液晶屏来实现人机交互及短信传递,高通科技进一步优化设计全套对讲机汉显解决方案,在原有条件下给对讲机汉字显示提供了多款字库芯片,进一步完善了中文菜单显示,多国语言菜单显示和短信姓名编辑等功能.此外,为对讲机客户提供高品质,高性能的

WPF与中文输入法兼容性问题的解决方案

问题 我在使用WPF进行编程的时候,发现的一个最大问题就是WPF与中文输入法的兼容性问题. 出现的问题大概分为两种: 程序崩溃: 无法切换输入法. 在笔者的环境中并未遇到过崩溃的情况,只是后一种情况.但我想这两种情况的原因应该一样. 具体的表现为:在WPF中的Textbox控件中输入汉字的时候,我们需要先切换输入法.切换之后状态栏显示切换成功,而开始键入拼音的时候却发现直接将拼音输入了Textbox框中,情形好似并未切换成功. 而且更为棘手的是,这种情况并不是绝对的,重启程序和多次切换输入法都可

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

WPF Popup全屏 弹出方法.解决只显示75%的问题. WPF 中 Popup 有一个特点.当Popup的高度超过屏幕的75%的时候,只显示75%的高度. 如下代码: <Window x:Class="WpfApplication13.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.micro

Android中文API——PopupWindow

此文上半部分为本人翻译API文档,下半部分转自网友分享资料. API文档 继承树: java.lang.Object ? android.widget.PopupWindow 概述: popupWindow,顾名思义,用作在当前Activity前弹出一个界面,这个界面可以用来展示任何类型的View. 公共的构造器: PopupWindow() PopupWindow(Context context) PopupWindow(Context context, AttributeSet attrs)

WKWebView 那些坑

导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨重难用.内存泄漏的 UIWebView.WKWebView 拥有60fps滚动刷新率.和 safari 相同的 JavaScript 引擎等优势. 简单的适配方法本文不再赘述,主要来说说适配 WKWebView 过程中填过的坑以及善待解决的技术难题. 1.WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一

iOS WKWebView 那些坑

导语 WKWebView 是苹果在 WWDC 2014 上推出的新一代 webView 组件,用以替代 UIKit 中笨重难用.内存泄漏的 UIWebView.WKWebView 拥有60fps滚动刷新率.和 safari 相同的 JavaScript 引擎等优势. 简单的适配方法本文不再赘述,主要来说说适配 WKWebView 过程中填过的坑以及善待解决的技术难题. 1.WKWebView 白屏问题 WKWebView 自诩拥有更快的加载速度,更低的内存占用,但实际上 WKWebView 是一

C#学习(一):C#简介

计算机语言计算机语言是指用于人与计算机之间通讯的语言机器码--汇编语言--高级语言(面向过程(线性).面向对象(类).面向组件(Unity)) 一.计算机语言发展趋势1.简单:代码生成逻辑2.面向人类逻辑3.安全:只有生产者可控5.平台无关:操作系统 二.操作系统:用户和计算机的接口,也是计算机硬件和其他软件的接口.软件(播放器)--操作系统(操作系统显示指令)--硬件(显示一个画面)PC游戏--PC端MAC游戏--MAC端Flash游戏--PC端和MAC端(Flash播放器,中间的翻译官) .