• 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 }
  • 相关阅读:
    bzoj1295 [SCOI2009]最长距离
    bzoj1853 [Scoi2010]幸运数字
    bzoj1855 [Scoi2010]股票交易
    bzoj1294 [SCOI2009]围豆豆
    bzoj1237 [SCOI2008]配对
    bzoj1084 [SCOI2005]最大子矩阵
    bzoj1068 [SCOI2007]压缩
    bzoj1082 [SCOI2005]栅栏
    soj97 旅行
    soj98 卡牌
  • 原文地址:https://www.cnblogs.com/zhiweifire/p/2269156.html
Copyright © 2020-2023  润新知