5.9.9UITextField

来源:互联网 发布:生命周期分析软件 编辑:程序博客网 时间:2024/05/09 03:52
按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/向后的;反向的,相反地;向后地,
     
    // 打开输入法
    voidopenIME();
    // 关闭输入法
    voidcloseIME();

UITextField的原型是CCTextFieldTTF,和前面提到的CCEditBox功能差不多,都是一个文本输入框,它提供的函数,我们一般制作用户登录界面基本可以满足
有时间看看 class CC_GUI_DLL UICCTextField:publicTextFieldTTF,publicTextFieldDelegate

voidsetTouchSize(constSize &size);//设置触摸区域大小******
voidsetPlaceHolder(conststd::string& value);//设置没有输入内容时的提示文本******
voidsetFontSize(int size);//设置输入框文本字体大小******
voidsetFontName(conststd::string& name);//设置输入框文本字体格式******
voidsetString(conststd::string& text);//******
conststd::string& getString()const;//获取输入框中的文字内容******
voidsetMaxLengthEnabled(bool enable);//设置是否开启文字内容最大长度限制******
boolisMaxLengthEnabled()const;//设置文字内容最大长度,需要配             合setMaxLengthEnabled使用******
voidsetPasswordEnabled(bool enable);//设置是否开启密码文字格式******
voidsetPasswordStyleText(constchar* styleText);//设置密码格式,默认格式“*”
voidaddEventListener(constccTextFieldCallback& 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(conststd::string& placeholder,
                            
const std::string& fontName,
                            
int fontSize);
    void setTouchSize(constSize &size);//设置触摸区域大小******
    Size getTouchSize()const;
   
void setTouchAreaEnabled(boolenable);
   
virtual bool hitTest(constVec2&pt);
   
    void setPlaceHolder(conststd::string& value);//设置没有输入内容时的提示文本******

    const std::string& getPlaceHolder()const;
   
const Color4B& getPlaceHolderColor()const;
   
void setPlaceHolderColor(constColor3B& color);
   
void setPlaceHolderColor(constColor4B& color);
   
void setTextColor(constColor4B& textColor);
   
    void setFontSize(int size);//设置输入框文本字体大小******
    int getFontSize()const;
    void setFontName(conststd::string& name);//设置输入框文本字体格式******
    const std::string& getFontName()const;
   
   
virtual void didNotSelectSelf();
   
   
CC_DEPRECATED_ATTRIBUTE void setText(conststd::string& text){this->setString(text);}
   
CC_DEPRECATED_ATTRIBUTE const std::string& getStringValue()const{returnthis->getString();}
   
    void setString(conststd::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(intlength);

   
int getMaxLength()const;
    int getStringLength() const;
    void setPasswordEnabled(bool enable);//设置是否开启密码文字格式******
    bool isPasswordEnabled()const;
    void setPasswordStyleText(constchar* styleText);//设置密码格式,默认格式“*”
    const char* getPasswordStyleText()const;
   
   
virtual void update(floatdt) override;
   
   
bool getAttachWithIME()const;
   
void setAttachWithIME(boolattach);
   
bool getDetachWithIME()const;
   
void setDetachWithIME(booldetach);
   
   
bool getInsertText()const;
   
void setInsertText(boolinsertText);
   
   
bool getDeleteBackward()const;
    void setDeleteBackward(booldeleteBackward);
    void addEventListener(constccTextFieldCallback& callback);//添加输入框事件监听******
    virtual std::stringgetDescription() const override;
    void attachWithIME();
   
virtual void onEnter() override;
   
   
void setTextAreaSize(constSize&size);
   
void setTextHorizontalAlignment(TextHAlignmentalignment);
   
void setTextVerticalAlignment(TextVAlignmentalignment);

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"//******
usingnamespacecocos2d::ui;
    void textFieldEvent(Ref* pSender,TextField::EventTypetype);
private:
    Size size;
    Text* label;
#include"ui/CocosGUI.h"//******
usingnamespacecocos2d::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("-");
voidHelloWorld::textFieldEvent(Ref* pSender,TextField::EventTypetype){

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








0 0