2015-02-05 3 views
1

내 새 프로젝트에 TextField를 사용하고 있는데 cocos2d-x 3.2에 있습니다. 텍스트를 입력 한 다음 입력 할 때 키보드가 숨겨 지지만 텍스트를 입력하면 제대로 작동합니다. & 내 텍스트 필드가 들어있는 PopUp 레이어를 닫으면 키보드가 열렸을 때 키보드를 열어 두었습니다. 이 상황에서 키보드를 숨기거나 닫을 수있는 방법을 모르겠습니다. 이것은 나를 위해 작동내 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; 
    } 
} 
+0

내 키보드가 같이 열려 남아 : 화면을 클릭하면 http://discuss.cocos2d-x.org/uploads/default/3141/110521140718_64ac4a858885861d7fce67eeb3c7056c.jpg도 내가, IOS 플랫폼에서 내 장면 –

+0

교체, 키보드 것이다 자동으로 사라집니다. – zilongshanren

답변

2

(적인 Cocos2D .. 여기

내 코드입니다 ... 도와주세요 -x-3.11.1) :

textField->detachWithIME()

(iOS 및 Android)