cocos2d 弹出软键盘所做的事情就是首先要有文本显示,然后通过代码将所要执行的命令写进去,下面我们就来看具体过程

 首先创建一个TextFieldTTF.h的头文件,在头文件中添加下面的代码
  1. #ifndef __TextFieldTTF_H__
  2. #define __TextFieldTTF_H__
  3. #include "cocos2d.h"
  4. USING_NS_CC;
  5. class TextFieldTTF : public CCLayer
  6. {
  7. public:
  8. bool init();
  9. static CCScene* scene();
  10. //用于处理触摸事件
  11. bool ccTouchBegan(CCTouch*, CCEvent*);
  12. //用于在程序中创建一个文本控件
  13. CCTextFieldTTF* textEdit;
  14. CREATE_FUNC(TextFieldTTF);
  15. };
  16. #endif // __HELLOWORLD_SCENE_H__
然后在TextFieldTTF.cpp中添加下面的代码
  1. #include "TextFieldTTF.h"
  2. CCScene* TextFieldTTF::scene()
  3. {
  4. CCScene* scene = CCScene::create();
  5. TextFieldTTF* layer = TextFieldTTF::create();
  6. scene->addChild(layer);
  7. return scene;
  8. }
  9. bool TextFieldTTF::init()
  10. {
  11. //初始化父类层
  12. CCLayer::init();
  13. //得到窗口的尺寸
  14. CCSize winSize = CCDirector::sharedDirector()->getWinSize();
  15. //创建文本框
  16. //第一个参数:文本框中显示的内容
  17. //第二个参数:字体
  18. //第三个参数:文本的大小
  19. textEdit = CCTextFieldTTF::textFieldWithPlaceHolder("Please input your name:",
  20. "Arial", 36);
  21. //设置文本框的位置
  22. textEdit->setPosition(ccp(winSize.width / 2, winSize.height / 2));
  23. //添加文本框到层上
  24. addChild(textEdit);
  25. //当触摸到控件的时候弹出软键盘
  26. setTouchMode(kCCTouchesOneByOne);
  27. setTouchEnabled(true);
  28. return true;
  29. }
  30. bool TextFieldTTF::ccTouchBegan(CCTouch* touch, CCEvent* ev)
  31. {
  32. //用于判断是否点中了控件
  33. bool isClicked = textEdit->boundingBox().containsPoint(touch->getLocation());
  34. //如果点中了控件
  35. if(isClicked)
  36. {
  37. //弹出软键盘
  38. textEdit->attachWithIME();
  39. }
  40. //表示接受触摸消息
  41. return true;
  42. }
程序执行结果
cocos2d 弹出软键盘所做的事情


Windows下单击“Please input your name: ”会没有反应,因为Windows下没有软键盘。

程序移值到Android下的执行结果
cocos2d 弹出软键盘所做的事情


 触摸“Please input your name :”后弹出软键盘

cocos2d 弹出软键盘所做的事情


使用软键盘输入一段文字后:

cocos2d 弹出软键盘所做的事情


选择完成后文字显示在控件上

cocos2d 弹出软键盘所做的事情