用法如下:
1.类继承publiccocos2d::extension::CCEditBoxDelegate,并实现CCEditBox需要实现的代理
virtualvoIDeditBoxEditingDIDBegin(cocos2d::extension::CCEditBox* editBox);
virtualvoIDeditBoxEditingDIDEnd(cocos2d::extension::CCEditBox* editBox);
virtualvoIDeditBoxTextChanged(cocos2d::extension::CCEditBox* editBox,conststd::string& text);
virtualvoIDeditBoxReturn(cocos2d::extension::CCEditBox* editBox);
2.定义输入框
cocos2d::extension::CCEditBox* mEditname;
mEditname =SUimgr.createCEditBox("Editaccount",this,400,250,60);
mEditname->setposition(mIDdleparentNode->getposition());
mEditname->setPlaceholderFontcolor(ccc3(255,255,255));
mEditname->setText("请输入名字");
mEditname->setMaxLength(10);
this->addChild(mEditname);
voIDeditBoxEditingDIDBegin(cocos2d::extension::CCEditBox* editBox)
{
mEditname->setText("");
mStrname ="";
}
voIDeditBoxEditingDIDEnd(cocos2d::extension::CCEditBox* editBox){
}
voIDeditBoxTextChanged(cocos2d::extension::CCEditBox* editBox,const std::string& text){
mStrname = text;
}
voIDeditBoxReturn(cocos2d::extension::CCEditBox* editBox){
}
4.检测函数(输入完成后调用,或向服务器请求时候调用,自检)
voIDchecknameNomative(conststring& text)
{
if (text =="") {
CcmessageBox("名字不能为空","account error!");
return;
}
//在苹果环境下需转为宽字符,因一个string中文长度为3,宽字符为1
std::wstring name_wstring =Utils::s2ws(text);
int chiniseSize =0;
int engnishSize =0;
for (int i =0; i != name_wstring.@H_403_413@length(); i++) {
// 判断是否为英文字母
if (((name_wstring[@H_403_413@i] >=48) && (name_wstring[@H_403_413@i]<=57)) || ((name_wstring[@H_403_413@i] >=65) && (name_wstring[@H_403_413@i] <=90)) || ((name_wstring[@H_403_413@i] >=97) && (name_wstring[@H_403_413@i] <=122))) {
engnishSize ++;
}
//是否为汉字
if (name_wstring[@H_403_413@i] >127) {
chiniseSize++;
}
}
// 全部为汉字1~6
if (((chiniseSize >0) && (chiniseSize < 7)) && (engnishSize ==0)) {
cclOG("全部汉字:%d",chiniseSize);
}
// 全部英文2~10
elseif (((engnishSize >1) && (engnishSize <11)) && (chiniseSize == 0)){
cclOG("全部英文:%d",engnishSize);
}
// 汉字加英文1~6
elseif (((chiniseSize >0) && (chiniseSize <7)) && ((engnishSize > 0) && (engnishSize <11)) && (chiniseSize + engnishSize <7)) {
cclOG("汉字加英文:%d + %d",chiniseSize,33)"> // 长度错误
else {
cclOG("长度错误!%d + %d",engnishSize);
}
}
// string 转宽字符函数 注:utf8是一开源文件,其中有包含检测的代码。用时需导入相关几个文件
std::wstringUtils::s2ws(conststd::string& s)
{
std::wstring resultstring;
resultstring.@H_403_413@reserve(s.@H_403_413@length());
utf8::utf8to16(s.@H_403_413@begin(),s.@H_403_413@end(),std::@H_403_413@back_inserter(resultstring));
return resultstring;
}
最后,cceditBox未做中英文区分,需自己写检测方法,用此方法可实现检测以及达到中英文输入自量的不同。
来自:http://blog.csdn.net/u010619611/article/details/36391455 总结
以上是内存溢出为你收集整理的Cocos2dx-CCEditBox输入框中英文检测全部内容,希望文章能够帮你解决Cocos2dx-CCEditBox输入框中英文检测所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)