cocos2d-x里面默认输入法就是调用系统默认的输入法,然后可以切换数字、中英文等,但是有些需求想让输入法默认数字,比如输入密码或电话等,这样体验会好很多的。
别的不多说了,直接上步骤。
1、EAGLView.h里面添加键盘类型属性
@property(nonatomic) UIKeyboardType keyboardType;
2、CCEGLView.h里面添加对键盘设置的方法
//设置为只有数字输入法的键盘
void setIMEKeyboardNumber() ;
//设置为默认的输入法键盘
void setIMEKeyboardDefault();
3、CCEGLView.mm里面添加对键盘设置的方法
//设置为只有数字输入法的键盘
void CCEGLView::setIMEKeyboardNumber()
{
EAGLView * view = [EAGLView sharedEGLView];
view.keyboardType =UIKeyboardTypeNumberPad;
}
//设置为默认的输入法键盘
void CCEGLView::setIMEKeyboardDefault()
{
EAGLView * view = [EAGLView sharedEGLView];
view.keyboardType =UIKeyboardTypePhonePad;
}
4、CCTextFieldTTF.h里面添加自定义的输入法键盘种类来做管理
enum eKeyBoardType
{
KEY_BOARD_TYPE_NORMAL = 0,
KEY_BOARD_TYPE_NUMBER,
};
inline void setKeyboardType (eKeyBoardType type) {m_keyboardType = type;}
inline int getKeyboardType () {return m_keyboardType;}
eKeyBoardType m_keyboardType;
5、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();
}
else if (getKeyboardType() ==KEY_BOARD_TYPE_NUMBER)
{
pGlView->setIMEKeyboardNumber();
}
pGlView->setIMEKeyboardState(true);
}
}
return bRet;
}
6、初始化用来输入的CCTextFieldTTF的时候调用
setKeyboardType(KEY_BOARD_TYPE_NUMBER);来设置输入法为数字即可