按return之后还能弹出键盘,若按键盘右下角的图形则不能弹出键盘,为什么会这样,是不是BUG
// textField->setDetachWithIME(true);
// textField->attachWithIME();
//CCEGLView * pGlView = CCDirector::sharedDirector()->getOpenGLView();
// pGlView->setIMEKeyboardState(true);
attach/ə'tætʃ/ 系上;贴上,附加;附属;伴随
detach /dɪ'tætʃ/ vt.
分离;派遣;使超然
Backward/'bækwəd/向后的;反向的,相反地;向后地,
//
打开输入法
void
openIME();
//
关闭输入法
void
closeIME();
UITextField的原型是CCTextFieldTTF,和前面提到的CCEditBox功能差不多,都是一个文本输入框,它提供的函数,我们一般制作用户登录界面基本可以满足
有时间看看
class
CC_GUI_DLL UICCTextField:
public
TextFieldTTF,
public
TextFieldDelegate
void
setTouchSize(const
Size &size);//设置触摸区域大小******
void
setPlaceHolder(const
std::string& value);//设置没有输入内容时的提示文本******
void
setFontSize(int size);//设置输入框文本字体大小******
void
setFontName(const
std::string& name);//设置输入框文本字体格式******
void
setString(const
std::string& text);//******
const
std::string&
getString()const;//获取输入框中的文字内容******
void
setMaxLengthEnabled(bool enable);//设置是否开启文字内容最大长度限制******
bool
isMaxLengthEnabled()const;//设置文字内容最大长度,需要配
合setMaxLengthEnabled使用******
void
setPasswordEnabled(bool enable);//设置是否开启密码文字格式******
void
setPasswordStyleText(const
char* styleText);//设置密码格式,默认格式“*”
void
addEventListener(const
ccTextFieldCallback& callback);//添加输入框事件监听******
enum
class EventType
{
ATTACH_WITH_IME,
DETACH_WITH_IME,
INSERT_TEXT,
DELETE_BACKWARD,
{
ATTACH_WITH_IME,
DETACH_WITH_IME,
INSERT_TEXT,
DELETE_BACKWARD,
};
typedef
std::function<void(Ref*,
EventType)> ccTextFieldCallback;
TextField();
virtual ~TextField();
static TextField* create();
static TextField* create(const std::string& placeholder,
const std::string& fontName,
int fontSize);
TextField();
virtual ~TextField();
static TextField* create();
static TextField* create(const std::string& placeholder,
const std::string& fontName,
int fontSize);
void setTouchSize(const
Size &size);//设置触摸区域大小******
Size getTouchSize()const;
void setTouchAreaEnabled(bool enable);
virtual bool hitTest(const Vec2 &pt);
void setTouchAreaEnabled(bool enable);
virtual bool hitTest(const Vec2 &pt);
void setPlaceHolder(const
std::string& value);//设置没有输入内容时的提示文本******
const
std::string& getPlaceHolder()const;
const Color4B& getPlaceHolderColor()const;
void setPlaceHolderColor(const Color3B& color);
void setPlaceHolderColor(const Color4B& color);
void setTextColor(const Color4B& textColor);
const Color4B& getPlaceHolderColor()const;
void setPlaceHolderColor(const Color3B& color);
void setPlaceHolderColor(const Color4B& color);
void setTextColor(const Color4B& textColor);
void setFontSize(int size);//设置输入框文本字体大小******
int getFontSize()const;
void setFontName(const
std::string& name);//设置输入框文本字体格式******
const
std::string& getFontName()const;
virtual void didNotSelectSelf();
CC_DEPRECATED_ATTRIBUTE void setText(const std::string& text){this->setString(text);}
CC_DEPRECATED_ATTRIBUTE const std::string& getStringValue()const{return this->getString();}
virtual void didNotSelectSelf();
CC_DEPRECATED_ATTRIBUTE void setText(const std::string& text){this->setString(text);}
CC_DEPRECATED_ATTRIBUTE const std::string& getStringValue()const{return this->getString();}
void setString(const
std::string& text);//******
const
std::string& getString()const;//获取输入框中的文字内容******
virtual bool onTouchBegan(Touch *touch, Event *unusedEvent) override;
void setMaxLengthEnabled(bool enable);//设置是否开启文字内容最大长度限制******
bool isMaxLengthEnabled()const;//设置文字内容最大长度,需要配合setMaxLengthEnabled使用******
void setMaxLength(int
length);
int getMaxLength()const;
int getMaxLength()const;
int getStringLength()
const;
void setPasswordEnabled(bool enable);//设置是否开启密码文字格式******
bool isPasswordEnabled()const;
void setPasswordStyleText(const
char* styleText);//设置密码格式,默认格式“*”
const
char* getPasswordStyleText()const;
virtual void update(float dt) override;
bool getAttachWithIME()const;
void setAttachWithIME(bool attach);
bool getDetachWithIME()const;
void setDetachWithIME(bool detach);
bool getInsertText()const;
void setInsertText(bool insertText);
bool getDeleteBackward()const;
virtual void update(float dt) override;
bool getAttachWithIME()const;
void setAttachWithIME(bool attach);
bool getDetachWithIME()const;
void setDetachWithIME(bool detach);
bool getInsertText()const;
void setInsertText(bool insertText);
bool getDeleteBackward()const;
void setDeleteBackward(bool
deleteBackward);
void addEventListener(const
ccTextFieldCallback& callback);//添加输入框事件监听******
virtual std::string
getDescription()
const override;
void attachWithIME();
virtual void onEnter() override;
void setTextAreaSize(const Size &size);
void setTextHorizontalAlignment(TextHAlignment alignment);
void setTextVerticalAlignment(TextVAlignment alignment);
virtual void onEnter() override;
void setTextAreaSize(const Size &size);
void setTextHorizontalAlignment(TextHAlignment alignment);
void setTextVerticalAlignment(TextVAlignment alignment);
protected:
void attachWithIMEEvent();
void detachWithIMEEvent();
void insertTextEvent();
void deleteBackwardEvent();
void insertTextEvent();
void deleteBackwardEvent();
virtual void
onSizeChanged() override;
virtual
Widget* createCloneInstance() override;
virtual void
copySpecialProperties(Widget* model) override;
#include
"ui/CocosGUI.h"//******
using
namespace
cocos2d::ui;
void textFieldEvent(Ref* pSender,TextField::EventType
type);
private:
Size size;
Size size;
Text* label;
#include
"ui/CocosGUI.h"//******
using
namespace
cocos2d::ui;
size
=
Director::getInstance()->getWinSize();
//用于显示进度条的后背景
label= Text::create();
label->setString("No Event");
label->setFontName("fonts/Marker Felt.ttf");
label->setFontSize(25);
label->setPosition(Vec2(size.width/2, size.height*0.7));
addChild(label);
//添加一个Imageview用语输入框背景
auto iv = ImageView::create();
iv->loadTexture("green_edit.png");
iv->setSize(Size(250, 50));
iv->setScale9Enabled(true);
iv->setPosition(Vec2(size.width/2, size.height/2));
addChild(iv);
auto textField = TextField::create();
textField->setTouchEnabled(true);
textField->setFontName("fonts/Marker Felt.ttf");
textField->setFontSize(20);
//设置文本提示
textField->setPlaceHolder("tap to input");
textField->setPosition(Vec2(size.width/2, size.height/2));
textField->addEventListener(CC_CALLBACK_2(HelloWorld::textFieldEvent, this));
//输入文字最大长度限制
textField->setMaxLength(15);
textField->setMaxLengthEnabled(true);
addChild(textField);
//设置密码内容隐藏
textField->setPasswordEnabled(true);
//用于显示进度条的后背景
label= Text::create();
label->setString("No Event");
label->setFontName("fonts/Marker Felt.ttf");
label->setFontSize(25);
label->setPosition(Vec2(size.width/2, size.height*0.7));
addChild(label);
//添加一个Imageview用语输入框背景
auto iv = ImageView::create();
iv->loadTexture("green_edit.png");
iv->setSize(Size(250, 50));
iv->setScale9Enabled(true);
iv->setPosition(Vec2(size.width/2, size.height/2));
addChild(iv);
auto textField = TextField::create();
textField->setTouchEnabled(true);
textField->setFontName("fonts/Marker Felt.ttf");
textField->setFontSize(20);
//设置文本提示
textField->setPlaceHolder("tap to input");
textField->setPosition(Vec2(size.width/2, size.height/2));
textField->addEventListener(CC_CALLBACK_2(HelloWorld::textFieldEvent, this));
//输入文字最大长度限制
textField->setMaxLength(15);
textField->setMaxLengthEnabled(true);
addChild(textField);
//设置密码内容隐藏
textField->setPasswordEnabled(true);
textField->setPasswordStyleText("-");
void
HelloWorld::textFieldEvent(Ref*
pSender,TextField::EventType
type){
TextField* textField = (TextField*)pSender;
switch (type) {
case TextField::EventType::ATTACH_WITH_IME:
label->setString(String::createWithFormat("attach with IME")->getCString());
break;
case TextField::EventType::DETACH_WITH_IME:
label->setString(String::createWithFormat("detach with IME")->getCString());
CCLOG("%s",textField->getString().c_str());
break;
case TextField::EventType::INSERT_TEXT:
label->setString(__String::createWithFormat("insert words")->getCString());
break;
case TextField::EventType::DELETE_BACKWARD:
label->setString(__String::createWithFormat("delete word")->getCString());
break;
TextField* textField = (TextField*)pSender;
switch (type) {
case TextField::EventType::ATTACH_WITH_IME:
label->setString(String::createWithFormat("attach with IME")->getCString());
break;
case TextField::EventType::DETACH_WITH_IME:
label->setString(String::createWithFormat("detach with IME")->getCString());
CCLOG("%s",textField->getString().c_str());
break;
case TextField::EventType::INSERT_TEXT:
label->setString(__String::createWithFormat("insert words")->getCString());
break;
case TextField::EventType::DELETE_BACKWARD:
label->setString(__String::createWithFormat("delete word")->getCString());
break;
}
}