您的位置:首页 > 移动开发 > Unity3D

Unity for IOS——密码框的实现,调用Iphone键盘输入

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

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

源代码如下:

using UnityEngine;
using System.Collections;

public class GUIFieldTest : MonoBehaviour {

/// <summary>
/// 实现了密码框功能,调用iphone键盘,输入的文字转换为*。
/// 作者:李志伟
/// </summary>

//真正的密码字符
public string inputStr = "";
private iPhoneKeyboard keyboard;
//按钮的样式
public GUIStyle passwordStyle;

// Use this for initialization
void Start () {

}

// Update is called once per frame
void Update () {
if (keyboard != null)
{
//当点击了iphone键盘上的done,键盘隐藏,取得输入值
if (keyboard.done)
{
keyboard.active = false;
inputStr = keyboard.text;
}
}
}

void OnGUI()
{
//输入区,利用按钮代替,增加GUIStyle,使其显示为输入框
if(GUI.Button (new Rect (100,100,200,20),PasswordField(inputStr ,"*"),passwordStyle))
{
//第一次点击输入区时,新建键盘
if (keyboard == null)
{
keyboard = new iPhoneKeyboard(inputStr,iPhoneKeyboardType.Default, true, false, true,false ,"please type your password");
}
//当键盘已激活时点击输入区,隐藏键盘
else if (keyboard != null && !keyboard.active)
{
keyboard.active = true;
}
//当键盘已创建并处于隐藏状态时,点击输入区,激活键盘
else if (keyboard != null && keyboard.active)
{
keyboard.active = false;
}
}
//键盘创建后,取得输入文字
if (keyboard != null)
inputStr = keyboard.text;

}

/// <summary>
/// 转换输入区文字为“*”或自定义字符
/// </summary>
/// <param name="password">iphone键盘输入的文字</param>
/// <param name="maskChar">用于替换文字的字符</param>
/// <returns></returns>
private string  PasswordField(string password, string maskChar)
{
string passwordMask = "";
for (int i = 0; i < password.Length; i++)
{
passwordMask = passwordMask + maskChar;
}
return passwordMask;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐