init方法中:
AccountText = dynamic_cast<UITextField*>(ul->getWidgetByName(“TextAccount”));
PasswordText = dynamic_cast<UITextField*>(ul->getWidgetByName(“TextPassword”));
AccountText->addEventListener(this, textfieldeventselector(HelloWorld::textFieldEvent));
PasswordText->addEventListener(this, textfieldeventselector(HelloWorld::textFieldEvent));
m_pDisplayValueLabel = UILabel::create();
m_pDisplayValueLabel->setText("");
m_pDisplayValueLabel->setFontName(“宋体”);
m_pDisplayValueLabel->setFontSize(20);
m_pDisplayValueLabel->setColor(ccc3(0, 0, 0));
m_pDisplayValueLabel->setAnchorPoint(ccp(0.5f, 0.5f));
float xx1 = xx + AccountText->getPosition().x;
float yy1 = yy + AccountText->getPosition().y;
m_pDisplayValueLabel->setPosition(ccp(xx1, yy1));
ul->addWidget(m_pDisplayValueLabel);
m_pDisplayValueLabel2 = UILabel::create();
m_pDisplayValueLabel2->setText("");
m_pDisplayValueLabel2->setFontName(“宋体”);
m_pDisplayValueLabel2->setFontSize(20);
m_pDisplayValueLabel2->setColor(ccc3(0, 0, 0));
m_pDisplayValueLabel2->setAnchorPoint(ccp(0.5f, 0.5f));
float xx2 = xx + PasswordText->getPosition().x;
float yy2 = yy + PasswordText->getPosition().y;
m_pDisplayValueLabel2->setPosition(ccp(xx2, yy2));
ul->addWidget(m_pDisplayValueLabel2);
void HelloWorld::textFieldEvent(CCObject pSender, TextFiledEventType type)
{
switch (type)
{
case TEXTFIELD_EVENT_ATTACH_WITH_IME:
{
UITextField textField = dynamic_cast<UITextField*>(pSender);
CCSize screenSize = CCDirector::sharedDirector()->getWinSize();
textField->runAction(CCMoveTo::create(0.225,
ccp(screenSize.width / 2.0f, screenSize.height / 2.0f + textField->getContentSize().height / 2)));
if (textField->getTag() == 8)
{
m_pDisplayValueLabel->setText("|");
}
else
{
m_pDisplayValueLabel2->setText("|");
}
}
break;
case TEXTFIELD_EVENT_DETACH_WITH_IME:
{
}
break;
case TEXTFIELD_EVENT_INDERT_TEXT:
{
UITextField* textField = dynamic_cast<UITextField*>(pSender);
CCLog(“INSERT: %s”, textField->getStringValue());
std::string strResult;
strResult = std::string(textField->getStringValue()) + std::string("|");
CCLog(“tag: %d”, textField->getTag());
if (textField->getTag() == 8)
{
m_pDisplayValueLabel->setText(strResult.c_str());
}
else
{
m_pDisplayValueLabel2->setText(strResult.c_str());
}
}
break;
case TEXTFIELD_EVENT_DELETE_BACKWARD:
{
UITextField* textField = dynamic_cast<UITextField*>(pSender);
CCLog(“INSERT: %s”, textField->getStringValue());
std::string strResult;
strResult = std::string(textField->getStringValue()) + std::string("|");
if (textField->getTag() == 8)
{
m_pDisplayValueLabel->setText(strResult.c_str());
}
else
{
m_pDisplayValueLabel2->setText(strResult.c_str());
}
}
break;
default:
{
CCLog(“default”);
}
break;
}
}
各位大神,我想实现两个带光标的输入框,一个输入帐号,一个输入密码。
现在的问题下面的步骤不能实现:
1.输入一半的帐号
2.输入密码
3.再输入剩余的帐号。
我的疑问:UITextField是不是有BUG哟。onTouchBegan只能响应一次,如果有多个UITextField就不行了。不能来回切换输入了。