cocos2d 弹出软键盘所做的事情就是首先要有文本显示,然后通过代码将所要执行的命令写进去,下面我们就来看具体过程。
首先创建一个TextFieldTTF.h的头文件,在头文件中添加下面的代码- #ifndef __TextFieldTTF_H__
- #define __TextFieldTTF_H__
- #include "cocos2d.h"
- USING_NS_CC;
- class TextFieldTTF : public CCLayer
- {
- public:
- bool init();
- static CCScene* scene();
- //用于处理触摸事件
- bool ccTouchBegan(CCTouch*, CCEvent*);
- //用于在程序中创建一个文本控件
- CCTextFieldTTF* textEdit;
- CREATE_FUNC(TextFieldTTF);
- };
- #endif // __HELLOWORLD_SCENE_H__
- #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 :”后弹出软键盘
使用软键盘输入一段文字后:
选择完成后文字显示在控件上