Cocos2d x 如何在关闭包含我的文本字段的图层时隐藏键盘

Cocos2d x 如何在关闭包含我的文本字段的图层时隐藏键盘,cocos2d-x,textfield,cocos2d-x-3.0,Cocos2d X,Textfield,Cocos2d X 3.0,我在cocos2d-x 3.2中的新项目中使用TextField。当我输入文本然后输入时,它工作正常,然后它隐藏了我的键盘,但当我输入文本时&我当时保持键盘打开,如果我关闭包含文本字段的弹出层,则我的键盘保持打开状态。我不知道在这种情况下如何隐藏或关闭键盘。请帮忙 这是我的密码 //在我的图层中添加文本字段 TextFiledd = TextField::create("", "fonts/HelveticaLTStd-Cond_0.ttf" , ButtonFontSize); TextFil

我在cocos2d-x 3.2中的新项目中使用TextField。当我输入文本然后输入时,它工作正常,然后它隐藏了我的键盘,但当我输入文本时&我当时保持键盘打开,如果我关闭包含文本字段的弹出层,则我的键盘保持打开状态。我不知道在这种情况下如何隐藏或关闭键盘。请帮忙

这是我的密码

//在我的图层中添加文本字段

TextFiledd = TextField::create("", "fonts/HelveticaLTStd-Cond_0.ttf" , ButtonFontSize);
TextFiledd->setContentSize(Size(Playername_bg->getContentSize().width ,Playername_bg->getContentSize().height));
TextFiledd->setPosition(Point(Playername_bg->getPositionX(),Playername_bg->getPositionY()));
TextFiledd->setAnchorPoint(Vec2::ANCHOR_MIDDLE);
TextFiledd->setMaxLength(10);
TextFiledd->setMaxLengthEnabled(true);
TextFiledd->addEventListener(CC_CALLBACK_2(PlayerName::textFieldEvent, this));
TextFiledd->setColor(Color3B::YELLOW);

TextFiledd->setBright(true);

TextFiledd->setTouchAreaEnabled(true);
TextFiledd->setTouchSize(Playername_bg->getContentSize());

bgFrameSprite->addChild(TextFiledd,PopUpTag);
//委托方法

 void PlayerName::textFieldEvent(cocos2d::Ref *pSender, TextField::EventType type)
 {
playerNameText = (TextField*)pSender;
CCLOG(" Player name : %s",playerNameText->getStringValue().c_str());
std::string key = Player_Name;
PlayerSettings::setPlayerName(key.c_str(), playerNameText->getStringValue().c_str());

switch (type)
{
    case TextField::EventType::ATTACH_WITH_IME:
    {
        TextField* textField = dynamic_cast<TextField*>(pSender);
        Size widgetSize = WinSize;
        runAction(CCMoveTo::create(0.225f,Vec2(0, widgetSize.height / 12.0f)));
        textField->setTextHorizontalAlignment(TextHAlignment::LEFT);
        textField->setTextVerticalAlignment(TextVAlignment::TOP);     
        playerNameText->setText(str);
    }
        break;

    case TextField::EventType::DETACH_WITH_IME:
    {
        TextField* textField = dynamic_cast<TextField*>(pSender);
        Size widgetSize = WinSize;
        runAction(CCMoveTo::create(0.175f, Vec2(0, 0)));
        textField->setTextHorizontalAlignment(TextHAlignment::LEFT);
        textField->setTextVerticalAlignment(TextVAlignment: 
    }
        break;

    case TextField::EventType::INSERT_TEXT:
        break;

    case TextField::EventType::DELETE_BACKWARD:
        break;

    default:
        break;
  }
 }
void PlayerName::textFieldEvent(cocos2d::Ref*pSender,TextField::EventType)
{
playerNameText=(TextField*)pSender;
CCLOG(“播放器名称:%s”,playerNameText->getStringValue().c_str());
std::string key=Player\u Name;
PlayerSettings::setPlayerName(key.c_str(),playerNameText->getStringValue().c_str());
开关(类型)
{
案例文本字段::事件类型::使用\u输入法附加\u:
{
TextField*TextField=dynamic_cast(pSender);
Size widgetSize=WinSize;
运行操作(CCMoveTo::create(0.225f,Vec2(0,widgetSize.height/12.0f));
textField->setTextHorizontalAlignment(TextHAlignment::LEFT);
textField->setTextVerticalAlignment(TextVAlignment::TOP);
playerNameText->setText(str);
}
打破
案例文本字段::事件类型::使用\u IME分离\u:
{
TextField*TextField=dynamic_cast(pSender);
Size widgetSize=WinSize;
运行操作(CCMoveTo::create(0.175f,Vec2(0,0));
textField->setTextHorizontalAlignment(TextHAlignment::LEFT);
textField->setTextVerticalAlignment(TextVAlignment:
}
打破
案例文本字段::事件类型::插入文本:
打破
案例文本字段::事件类型::向后删除\u:
打破
违约:
打破
}
}
这对我很有用(cocos2d-x-3.11.1):

textField->detachWithIME()


在iOS和Android上。

我的键盘仍然是这样打开的:即使我在iOS平台上更换了我的场景,如果你点击屏幕,键盘也会自动消失。过时的答案-新版本的Cocos2DX中不再存在API。