废话不多说,下面代码直接挂载到InputField上面


using System;
using System.Collections;
using System.Diagnostics;
using System.IO;
using System.Runtime.InteropServices;
using UnityEngine;
using UnityEngine.EventSystems;
using UnityEngine.UI;[RequireComponent(typeof(InputField))]public class Keybord : MonoBehaviour, ISelectHandler, IDeselectHandler{InputField field;[SerializeField] bool forcePopup = true ;static Coroutine closeCoroutine = null;void Start(){field = GetComponent<InputField>();}static Keybord()  //静态构造,无论多少实例全局只执行一次。能够避免某些时候软键盘首次无法唤起的异常{HideKeyboard();}#region Coroutine IEnumerator DelayOpen(){yield return new WaitForEndOfFrame();  //延迟开启 ,避免多个 InputField 输入数据相同的问题string _file = "C:\\Program Files\\Common Files\\microsoft shared\\ink\\TabTip.exe";if (File.Exists(_file)){print("DelayOpen--------------");using (Process _process = Process.Start(_file)) { };}}IEnumerator DelayQuit(){yield return new WaitForSecondsRealtime(0.1f);HideKeyboard();}#endregionstatic void HideKeyboard(){try{IntPtr _touchhWnd = IntPtr.Zero;_touchhWnd = FindWindow("IPTip_Main_Window", null);print(_touchhWnd);if (_touchhWnd != IntPtr.Zero) PostMessage(_touchhWnd, WM_SYSCOMMAND, SC_CLOSE, 0);}catch { }}#region EventSystem Interface Implementvoid ISelectHandler.OnSelect(BaseEventData eventData){PointerEventData data = eventData as PointerEventData;//如果不是鼠标左键触发的选中事件就证明是Touch触发的,那么就可以弹软键盘!if (forcePopup || (null != data && data.pointerId != -1)){if (null != closeCoroutine) //及时的阻止软键盘的关闭动作,避免了软键盘的反反复复的折叠与展开{StopCoroutine(closeCoroutine);closeCoroutine = null;}StartCoroutine("DelayOpen");}}void IDeselectHandler.OnDeselect(BaseEventData eventData){//不关心哪个输入框取消了选中都延迟折叠软键盘,因为延迟,所以点了下一个输入框还能保持软键盘唤起。if (null == closeCoroutine){closeCoroutine = StartCoroutine("DelayQuit");}}#endregion#region Win32API Wrapper[DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "FindWindow")]private static extern IntPtr FindWindow(string lpClassName, string lpWindowName);[DllImport("User32.dll", SetLastError = true, CharSet = CharSet.Auto, EntryPoint = "PostMessage")]private static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam);private const Int32 WM_SYSCOMMAND = 274;private const UInt32 SC_CLOSE = 61536;#endregion}

unity调用软键盘相关推荐

  1. 移动端h5唤起键盘_移动端H5界面打开后,如何自动调用软键盘

    test(){ // let aa = this.$refs.input1.blur(); // this.$nextTick((x)=>{ //正确写法 // // this.$refs.in ...

  2. Unity3d C# 实现UGUI 输入框调用软键盘输入的完整功能(含工程源码,适用触屏一体机等)

    前言 如题的需求经常会在甲方的需求中出现,比如一体机上,大多客户会不选择键盘和鼠标,因为觉得比较low的可能.自己弄一个内置UI键盘的话也是可行的,只不过可能就英文输入好实现,实现带中文的输入可能就比 ...

  3. android 键盘退回 慢,调用软键盘的速度很慢。。。

    安卓机器上测试,每一次打开软件 ,第一次触发调用软键盘,要延迟2-3秒才会出来,,, 然后再点的时候,就速度很快了,,这是什么原因?? 代码如下: var openSoftKeyboard = fun ...

  4. wincc调用软键盘的几种方法

    wincc调用软键盘 软件设置 VB脚本 调用windows系统软键盘 调用wincc自带软键盘 C脚本 调用windows系统软键盘 调用wincc自带软键盘 软件设置 打开"计算机属性& ...

  5. Qt5 QLineEdit实现点击调用软键盘

    Qt版本: Qt 5.9.3 (MSVC 2015, 32 bit) 我们知道,QLineEdit 是没有Clicked信号的,那么怎么实现点击它调用软件盘呢? 麻烦点的有重写 LineEdit 的 ...

  6. 调用软键盘_Android 支持拖动、缩放的自定义软键盘

    点击上方"Android技术杂货铺",选择"标星" 干货文章,第一时间送达! 开篇 本次给大家分享的是支持拖动.缩放的自定义原生软键盘.不同于市面上的自定义软件 ...

  7. Window调用软键盘方法

    1 调用运行界面 win + r 快捷键也行 2 输入osk,回车 3 华丽丽的软键盘 因为笔记本的B和Q键坏了,所以只能出此下次,记得固定在Window底下的任务栏中,方便随时显示

  8. c# wpf页面调用软键盘

    由于项目需要,需要在windows平板上使用输入,写了一个软键盘.在这里贴出来,供大家使用,如果对你有帮助,请点赞或者加个关注收藏什么的,有点赏金就更好了. 废话不多说了,上代码: 1.软键盘窗口前台 ...

  9. java 调用软键盘_打开软键盘

    WIN32的话话,要是这几个函数SIPINFO.SHSIPINFO.SIPSETINFO.SIPGETINFO .NET底下有个INPUTPANEL设置他的ENABLE就OK了. //隐藏输入面板 B ...

最新文章

  1. SQL Server-流程控制 5,Goto 语句
  2. 3D视觉工坊中秋国庆贺礼!
  3. Nginx前端设置反向代理,后端Apache如何获取访客的真实IP,结合PHP。
  4. NumberOf1Bits(leetcode191)
  5. Android --- 漂亮的 Loader 加载动画
  6. Linux-Vim使用技巧
  7. 华为鸿蒙一再延期,华为P50再次延期,鸿蒙系统正式版加持,有望与新平板一同登场...
  8. 二维数组m的元素是4个字符组成的串_串、数组和广义表
  9. 使用Red Gate Sql Compare 数据库同步工具进行SQL Server的两个数据库的结构比较、同步...
  10. 在IDEA中安装使用Antlr
  11. 连接mysql数据库小知识记录
  12. python爬虫怎么赚钱-python爬虫怎么赚钱
  13. 老板平常多说点好听的
  14. c语言如何交替打印大小写字母,C/C++语言实现两个线程交替打印奇偶数
  15. TEM测试常见问题及解答(二)
  16. python谁的教程好贴吧_python深挖65万人的明星贴吧,探究上万个帖子的秘密
  17. 工业访问控制行业调研报告 - 市场现状分析与发展前景预测(2021-2027年)
  18. vue-lunar-full-calendar日程控件加农历、24节气和中国节假日的功能
  19. 温柔末世,慢慢到来的末日
  20. 创新思维与方法期末考试答案

热门文章

  1. QQ登录超时,错误代码70001或00001,解决办法
  2. AI在游戏里碾压了我们之后,又准备去开发游戏了
  3. fincial words
  4. matlab判断m是否为完数,编写一个函数过程:判断一个已知数m是否是完数(完数就是指该数本身等于它各个因子之和,如6=1+2+3,6就是...
  5. 串口摄像头得到了一张图像的JPEG数据,我把这些数据复制到txt文档了,想将这些数据变为图像...
  6. 吐血巨献:VB网络编程(webbrowser+Inet+抓包封包+经验)
  7. 某公交公司商业智能系统建设方案分享
  8. 科沃斯机器人“入职”自助办税服务厅
  9. 文本超出部分省略号显示
  10. 从2开始,在Go语言后端业务系统中引入缓存