为cocos2d-x 添加启动数字输入法的功能

cocos2d-x 里面默认输入法只有一种,就是启动的时候就是系统默认的输入法,然后可以切换数字,中英文等等,

但是我们程序里有个功能设置价格,不希望能够输入中英文,只要输入数字,输入以后再判断显然用户体验不好,咨询了官方人员获得了一些提示,

但是仍然无法解决这个问题,最后在苹果官网查到了相关信息,测试一番后得到了现在的解决方案,存档备忘,并且share给大家。


官方相关内容链接如下:https://developer.apple.combrary/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/Introduction/Introduction.html

解决方法:

1、EAGLView.h里面添加键盘类型属性

@property(nonatomic)UIKeyboardTypekeyboardType;


2、CCEGLView_ios.mm 里面添加对键盘设置的方法

//设置为只有数字输入法的键盘

voidCCEGLView::setIMEKeyboardNumber()

{

EAGLView* view = [EAGLViewsharedEGLView];

view.keyboardType=UIKeyboardTypeNumberPad;

}

//设置为默认的输入法键盘

voidCCEGLView::setIMEKeyboardDefault()

view.keyboardType=UIKeyboardTypePhonePad;

}


3、CCTextFieldTTF.h里面添加自定义的输入法键盘种类来做管理

enumeKeyBoardType{

KEY_BOARD_TYPE_NORMAL =0,

KEY_BOARD_TYPE_NUMBER,43); font-family:Arial; font-size:14px; line-height:26px"> };

inlinevoidsetKeyboardType (eKeyBoardTypetype) {m_keyboardType= type; }

inlineintgetKeyboardType () {returnm_keyboardType; }

eKeyBoardTypem_keyboardType;


4、boolCCTextFieldTTF::attachWithIME()改成这样:

boolCCTextFieldTTF::attachWithIME()

boolbRet =CCIMEDelegate::attachWithIME();

if(bRet)

{

// open keyboard

CCEGLView* pGlView =CCDirector::sharedDirector()->getOpenGLView();

if(pGlView)

{

if(getKeyboardType() ==KEY_BOARD_TYPE_NORMAL) {

pGlView->setIMEKeyboardDefault();

}elseif(getKeyboardType() ==KEY_BOARD_TYPE_NUMBER) {

pGlView->setIMEKeyboardNumber();

}

pGlView->setIMEKeyboardState(true);

}

}

returnbRet;

5、初始化用来输入的CCTextFieldTTF的时候调用

setKeyboardType(KEY_BOARD_TYPE_NUMBER);来设置输入法为数字即可

本文转载自:http://blog.csdn.net/smilelance/article/details/7244759

相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...