为cocos2d-x 添加启动数字输入法的功能
cocos2d-x 里面默认输入法只有一种,就是启动的时候就是系统默认的输入法,然后可以切换数字,中英文等等,
但是我们程序里有个功能设置价格,不希望能够输入中英文,只要输入数字,输入以后再判断显然用户体验不好,咨询了官方人员获得了一些提示,
但是仍然无法解决这个问题,最后在苹果官网查到了相关信息,测试一番后得到了现在的解决方案,存档备忘,并且share给大家。
官方相关内容链接如下:https://developer.apple.combrary/ios/#documentation/StringsTextFonts/Conceptual/TextAndWebiPhoneOS/Introduction/Introduction.html
解决方法:
1、EAGLView.h里面添加键盘类型属性
@property(nonatomic) UIKeyboardType keyboardType;
2、CCEGLView_ios.mm 里面添加对键盘设置的方法
//设置为只有数字输入法的键盘
void CCEGLView::setIMEKeyboardNumber()
{
EAGLView * view = [EAGLViewsharedEGLView];
view.keyboardType =UIKeyboardTypeNumberPad;
}
//设置为默认的输入法键盘
void CCEGLView::setIMEKeyboardDefault()
{
EAGLView * view = [EAGLViewsharedEGLView];
view.keyboardType =UIKeyboardTypePhonePad;
}
3、CCTextFieldTTF.h里面添加自定义的输入法键盘种类来做管理
enum eKeyBoardType{
KEY_BOARD_TYPE_NORMAL = 0,
KEY_BOARD_TYPE_NUMBER,
};
inline void setKeyboardType (eKeyBoardType type) {m_keyboardType = type; }
inline int getKeyboardType () {returnm_keyboardType; }
eKeyBoardType m_keyboardType;
4、bool CCTextFieldTTF::attachWithIME()改成这样:
bool CCTextFieldTTF::attachWithIME()
{
bool bRet = 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);
}
}
return bRet;
}
5、初始化用来输入的CCTextFieldTTF的时候调用
setKeyboardType(KEY_BOARD_TYPE_NUMBER);来设置输入法为数字即可
转载请保留以下信息:
作者(Author):smilelance
出处( From ):http://blog.csdn.net/smilelance