UICCTextField * UICCTextField::create(const std::string& placeholder, const std::string& fontName, float fontSize) { UICCTextField *pRet = new (std::nothrow) UICCTextField(); if(pRet && pRet->initWithPlaceHolder("", fontName, fontSize)) { pRet->autorelease(); if (!placeholder.empty()) { pRet->setPlaceHolder(placeholder); } return pRet; } CC_SAFE_DELETE(pRet); return nullptr; }
UICCTextField * UICCTextField::create(const char *placeholder, const char *fontName, float fontSize) { UICCTextField *pRet = new UICCTextField(); if(pRet && pRet->initWithString("", fontName, fontSize)) { pRet->autorelease(); if (placeholder) { pRet->setPlaceHolder(placeholder); } return pRet; } CC_SAFE_DELETE(pRet); return nullptr; }
bool UITextFieldTest_LineWrap::init() { if (UIScene::init()) { CCSize widgetSize = m_pWidget->getSize(); // Add a label in which the textfield events will be displayed m_pDisplayValueLabel = UILabel::create(); m_pDisplayValueLabel->setText("No Event"); m_pDisplayValueLabel->setFontName("Marker Felt"); m_pDisplayValueLabel->setFontSize(30); m_pDisplayValueLabel->setAnchorPoint(ccp(0.5f, -1)); m_pDisplayValueLabel->setPosition(ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f + m_pDisplayValueLabel->getSize().height * 1.5)); m_pUiLayer->addWidget(m_pDisplayValueLabel); // Add the alert UILabel *alert = UILabel::create(); alert->setText("TextField line wrap"); alert->setFontName("Marker Felt"); alert->setFontSize(30); alert->setColor(ccc3(159, 168, 176)); alert->setPosition(ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f - alert->getSize().height * 3.075)); m_pUiLayer->addWidget(alert); // Create the textfield UITextField* textField = UITextField::create(); UICCTextField* render = static_cast<UICCTextField*>(textField->getVirtualRenderer()); render->setDimensions(CCSizeMake(240, 160)); render->setHorizontalAlignment(kCCTextAlignmentCenter); render->setVerticalAlignment(kCCVerticalTextAlignmentCenter); textField->setTouchEnabled(true); textField->setFontName("Marker Felt"); textField->setFontSize(30); textField->setPlaceHolder("input words here"); textField->setPosition(ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f)); textField->addEventListenerTextField(this, textfieldeventselector(UITextFieldTest_LineWrap::textFieldEvent)); m_pUiLayer->addWidget(textField); return true; } return false; }
void UITextFieldTest_LineWrap::textFieldEvent(CCObject *pSender, TextFiledEventType type) { switch (type) { case TEXTFIELD_EVENT_ATTACH_WITH_IME: { UITextField* textField = dynamic_cast<UITextField*>(pSender); CCSize widgetSize = m_pWidget->getSize(); textField->runAction(CCMoveTo::create(0.225, ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f + textField->getContentSize().height / 2))); UICCTextField* render = static_cast<UICCTextField*>(textField->getVirtualRenderer()); render->setHorizontalAlignment(kCCTextAlignmentLeft); render->setVerticalAlignment(kCCVerticalTextAlignmentTop); m_pDisplayValueLabel->setText(CCString::createWithFormat("attach with IME")->getCString()); } break; case TEXTFIELD_EVENT_DETACH_WITH_IME: { UITextField* textField = dynamic_cast<UITextField*>(pSender); CCSize widgetSize = m_pWidget->getSize(); textField->runAction(CCMoveTo::create(0.175, ccp(widgetSize.width / 2.0f, widgetSize.height / 2.0f))); UICCTextField* render = static_cast<UICCTextField*>(textField->getVirtualRenderer()); render->setHorizontalAlignment(kCCTextAlignmentCenter); render->setVerticalAlignment(kCCVerticalTextAlignmentCenter); m_pDisplayValueLabel->setText(CCString::createWithFormat("detach with IME")->getCString()); } break; case TEXTFIELD_EVENT_INSERT_TEXT: m_pDisplayValueLabel->setText(CCString::createWithFormat("insert words")->getCString()); break; case TEXTFIELD_EVENT_DELETE_BACKWARD: m_pDisplayValueLabel->setText(CCString::createWithFormat("delete word")->getCString()); break; default: break; } }