5.9.9UITextField

本文详细介绍了Cocos2d-x中UITextField的功能与使用方法,包括如何设置文本框的各种属性,如字体大小、颜色及密码模式等,并提供了事件监听及文本输入控制的相关代码示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

按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,
    };

    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);
    void setTouchSize(const Size &size);//设置触摸区域大小******
    Size getTouchSize()const;
   
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);
   
    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();}
   
    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 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;
    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);

protected:
    void attachWithIMEEvent();
    void detachWithIMEEvent();
   
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;
    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);
    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;
    }
}








评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值