zoukankan      html  css  js  c++  java
  • Unity for IOS——密码框的实现,调用Iphone键盘输入

    最近的项目中发现,Unity中的GUI.TextField,GUI.PasswordField无法用于iphone发布。当使用以上两个东东后,在从xcode工程中发布时会报一堆警告,而程序在iphone上就会一直停留在unity loading界面上。

    通过查找文档,发现unity可以调用iphone原生键盘,于是利用GUI.BUtton和iphone键盘配合,实现了密码框功能。

    源代码如下:

     1 using UnityEngine;
    2 using System.Collections;
    3
    4 public class GUIFieldTest : MonoBehaviour {
    5
    6 /// <summary>
    7 /// 实现了密码框功能,调用iphone键盘,输入的文字转换为*。
    8 /// 作者:李志伟
    9 /// </summary>
    10
    11 //真正的密码字符
    12 public string inputStr = "";
    13 private iPhoneKeyboard keyboard;
    14 //按钮的样式
    15 public GUIStyle passwordStyle;
    16
    17 // Use this for initialization
    18 void Start () {
    19
    20 }
    21
    22 // Update is called once per frame
    23 void Update () {
    24 if (keyboard != null)
    25 {
    26 //当点击了iphone键盘上的done,键盘隐藏,取得输入值
    27 if (keyboard.done)
    28 {
    29 keyboard.active = false;
    30 inputStr = keyboard.text;
    31 }
    32 }
    33 }
    34
    35
    36 void OnGUI()
    37 {
    38 //输入区,利用按钮代替,增加GUIStyle,使其显示为输入框
    39 if(GUI.Button (new Rect (100,100,200,20),PasswordField(inputStr ,"*"),passwordStyle))
    40 {
    41 //第一次点击输入区时,新建键盘
    42 if (keyboard == null)
    43 {
    44 keyboard = new iPhoneKeyboard(inputStr,iPhoneKeyboardType.Default, true, false, true,false ,"please type your password");
    45 }
    46 //当键盘已激活时点击输入区,隐藏键盘
    47 else if (keyboard != null && !keyboard.active)
    48 {
    49 keyboard.active = true;
    50 }
    51 //当键盘已创建并处于隐藏状态时,点击输入区,激活键盘
    52 else if (keyboard != null && keyboard.active)
    53 {
    54 keyboard.active = false;
    55 }
    56 }
    57 //键盘创建后,取得输入文字
    58 if (keyboard != null)
    59 inputStr = keyboard.text;
    60
    61
    62 }
    63
    64 /// <summary>
    65 /// 转换输入区文字为“*”或自定义字符
    66 /// </summary>
    67 /// <param name="password">iphone键盘输入的文字</param>
    68 /// <param name="maskChar">用于替换文字的字符</param>
    69 /// <returns></returns>
    70 private string PasswordField(string password, string maskChar)
    71 {
    72 string passwordMask = "";
    73 for (int i = 0; i < password.Length; i++)
    74 {
    75 passwordMask = passwordMask + maskChar;
    76 }
    77 return passwordMask;
    78 }
    79 }
  • 相关阅读:
    ZROI NOI2019集训汇总
    牛客 在二叉树中找到累加和为指定值的最长路径长度
    牛客 遍历二叉树的神级方法
    牛客 打印二叉树边界节点
    牛客 实现二叉树先序,中序和后序遍历
    LeetCode K个一组翻转链表
    LeetCode 相交链表&环形链表II
    LeetCode 分隔链表
    LeetCode 复制带随机指针的链表
    LeetCode 回文链表
  • 原文地址:https://www.cnblogs.com/zhiweifire/p/2269156.html
Copyright © 2011-2022 走看看