一些情況下,可能會有這樣的需求,只要調起鍵盤進行輸入,不需要像 UGUI 中那樣有一個顯示的 Field,這時就直接使用 TouchScreenKeyboard 調動系統輸入來處理,
如何使用
- TouchScreenKeyboard.Open 調起 keyboard
- 在 Update 中判斷 keyboard 的狀態,當不可見并處于 Done 狀態時視為輸入完成
遇到的問題
在 2018.4.19(我使用的版本)中,喚起 keyboard 后,在 keyboard 外點擊,keyboard 收起,不能正確識別為取消輸入,導致再次喚起 keyboard 失敗,丟失焦點(切換應用到后臺再切回來)會重繪,
如何解決
在 keyboard 收起后,同樣會有一次焦點的切換,在 OnApplicationFocus 中進行判斷,當獲得焦點,keyboard 依然處于可視狀態時,視為 cancel,
實體
using System;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class Test
{
private string lastInput = String.Empty;
private TouchScreenKeyboard keyboard;
// 調起鍵盤
public void OnChatClick()
{
// Open 根據需要修改具體的引數
keyboard = TouchScreenKeyboard.Open(lastInput, TouchScreenKeyboardType.ASCIICapable, true, true);
}
// 處理輸入
public void DealInput(string content)
{
}
// 檢測輸入完畢
private void Update()
{
if (TouchScreenKeyboard.visible == false && keyboard != null)
{
if (keyboard.status == TouchScreenKeyboard.Status.Done)
{
DealInput(keyboard.text);
lastInput = String.Empty;
keyboard = null;
}
}
}
// 因為在 android 上點擊鍵盤外邊,會收起但是不會被判定為 cancel
// 所以補一個鍵盤失去焦點的判斷
// 2018.4.19 是這樣,后邊不清楚有沒有改
private void OnApplicationFocus(bool hasFocus)
{
if (hasFocus)
{
if (keyboard != null && keyboard.status == TouchScreenKeyboard.Status.Visible)
{
keyboard.active = false;
lastInput = keyboard.text;
keyboard = null;
}
}
}
參考鏈接
- HoloLens開發手記 - Unity之Keyboard input 鍵盤輸入 - msp的昌偉哥哥 - 博客園 (cnblogs.com)
- Unity - Scripting API: TouchScreenKeyboard
以下和本文內容無關
TIL,也就是 Today I Learned,實際上就是一個類似于筆記的東西,把一些基礎的,比較細枝末節的內容記錄整理以下,方便自己以后查找、復習,當然如果能幫到其他人就更好了,同時也算是對自己的一個激勵,保持一個學習、記錄、思考的狀態,
很早之前看到劉未鵬的為什么你應該(從現在開始就)寫博客,斷斷續續嘗試過幾次,但每次都是三分鐘熱度,這次決定按著 TIL 的思路還有雨松momo的unity系列博客(相信有很多人都有受到他博客的幫助)那樣從最基本的內容開始,先培養一個習慣,希望這次能夠堅持下去,
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/472903.html
標籤:其他
上一篇:線索二叉樹的構造及前驅后繼的查找
