本文就主要介绍下cocos2d-x如何弹出键盘,使用CCTextFieldTTF类CCTextFieldTTF是一个显示文本控件的类用于输入文本和现实文本类似于Windows编程中的Static控件和Edit控件。
程序实例:使用TextFieldTTF类创建一个文本,触摸文本弹出软键盘,并且可以通过软键盘向TextFieldTTF中输入文字
首先创建一个TextFieldTTF.h的头文件,在头文件中添加下面的代码
然后在TextFieldTTF.cpp中添加下面的代码
- #include "TextFieldTTF.h"
- CCScene* TextFieldTTF::scene()
- {
- CCScene* scene = CCScene::create();
- TextFieldTTF* layer = TextFieldTTF::create();
- scene->addChild(layer);
- return scene;
- }
- bool TextFieldTTF::init()
- {
- //初始化父类层
- CCLayer::init();
- //得到窗口的尺寸
- CCSize winSize = CCDirector::sharedDirector()->getWinSize();
- //创建文本框
- //第一个参数:文本框中显示的内容
- //第二个参数:字体
- //第三个参数:文本的大小
- textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input your name:",
- "Arial", 36);
- //设置文本框的位置
- textEdit->setPosition(ccp(winSize.width / 2, winSize.height / 2));
- //添加文本框到层上
- addChild(textEdit);
- //当触摸到控件的时候弹出软键盘
- setTouchMode(kCCTouchesOneByOne);
- setTouchEnabled(true);
- return true;
- }
- bool TextFieldTTF::ccTouchBegan(CCTouch* touch, CCEvent* ev)
- {
- //用于判断是否点中了控件
- bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());
- //如果点中了控件
- if(isClicked)
- {
- //弹出软键盘
- textEdit->attachWithIME();
- }
- //表示接受触摸消息
- return true;
- }
在Windows下单击“Please input your name: ”会没有反应,因为Windows下没有软键盘。
程序移值到Android下的执行结果:
触摸“Please input your name :”后弹出软键盘
使用软键盘输入一段文字后:
选择完成后文字显示在控件上
程序实例:TextFieldTTF实现输入密码
将TextFieldTTF.cpp文件中的代码改成下面的代码
- #include "TextFieldTTF.h"
- CCScene* TextFieldTTF::scene()
- {
- CCScene* scene = CCScene::create();
- TextFieldTTF* layer = TextFieldTTF::create();
- scene->addChild(layer);
- return scene;
- }
- bool TextFieldTTF::init()
- {
- //初始化父类层
- CCLayer::init();
- //得到窗口的尺寸
- CCSize winSize = CCDirector::sharedDirector()->getWinSize();
- //创建文本框
- textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input your name:",
- "Arial", 36);
- //设置文本框的位置
- textEdit->setPosition(ccp(winSize.width / 2, winSize.height / 2));
- //添加文本框到层上
- addChild(textEdit);
- //输入密码
- textEdit->setSecureTextEntry(true);
- //注册触摸函数,实现当触摸到控件的时候,弹出软键盘
- setTouchMode(kCCTouchesOneByOne);
- setTouchEnabled(true);
- return true;
- }
- bool TextFieldTTF::ccTouchBegan(CCTouch* touch, CCEvent* ev)
- {
- //用于判断是否点中了控件
- bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());
- //如果点中了控件
- if(isClicked)
- {
- //弹出软键盘
- textEdit->attachWithIME();
- }
- //表示接受触摸消息
- return true;
- }
触摸“Please input your name :”后弹出软键盘
使用软键盘输入一段文字
选择完成后文字显示在控件上