CATextField(輸入框1.2以前版本)

2018-09-08 18:32 更新

類說明

CATextField是單行輸入框控件。主要接收用戶的文本輸入,多用于用戶名、密碼、聊天輸入等。(1.1版本)


CATextField 屬性 (點擊屬性名可查看屬性介紹)

屬性
說明
BackgroundViewTextField的背景視圖
CursorColorTextField的光標顏色
FontNameTextField的字體名稱
FontSizeTextField的字體大小
HoriMarginsTextField的水平邊緣
InputTypeTextField的輸入類型
PlaceHolderPlaceHolder文本內(nèi)容
SpaceHolderColorPlaceHolder文本內(nèi)容顏色
TextTextField的文本內(nèi)容
TextColorTextField的文字顏色
TextEditAlignTextField的文本編輯對齊
CharCountTextField的字符計數(shù)
DelegateTextField的代理(設(shè)置代理才能被監(jiān)聽狀態(tài))
VertMarginsTextField的垂直邊緣


CATextField 方法 (點擊方法名可查看方法介紹)

函數(shù)說明
setKeyboardType設(shè)置鍵盤的類型(真機或模擬器上有效)
getKeyboardType獲取鍵盤類型(真機或模擬器上有效)
setKeyboardReturnType設(shè)置確認鍵的類型(真機或模擬器上有效)  
getKeyboardReturnType獲取確認鍵的類型(真機或模擬器上有效)  
resignFirstResponder隱藏鍵盤第一響應(yīng)者狀態(tài)
becomeFirstResponder彈出鍵盤第一響應(yīng)者狀態(tài)
resignResponder隱藏鍵盤狀態(tài)
createWithFrame創(chuàng)建,并指定其Frame
createWithCenter創(chuàng)建,并指定其Center
init初始化
setImageRect設(shè)置圖像大小
updateImageRect更新圖像
setColor設(shè)置顏色
getColor獲取顏色


CATextField是單行輸入框控件。主要接收用戶的文本輸入,多用于用戶名、密碼、聊天輸入等。


在CATextField接受用戶輸入文本時,我們有時候希望獲得用戶的操作行為,比如CATextField獲得焦點、CATextField失去焦點、用戶輸入字符、用戶刪除字符,這樣我們可以對用戶的操作進行邏輯處理,比如限制輸入內(nèi)容,輸入字符長度等。那么如何才能監(jiān)聽到CATextField的改變呢?我們需要了解一下啊CATextFieldDelegate,它主要使用的有四個函數(shù)分別是:

//獲得焦點   
virtual bool onTextFieldAttachWithIME(CATextField * sender);   
 
//失去焦點   
virtual bool onTextFieldDetachWithIME(CATextField * sender);   
    
//輸入文本   
virtual bool onTextFieldInsertText(CATextField * sender, const char * text, int nLen);   
 
//刪除文本   
virtual bool onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen)
假如我們想在FirstViewController中監(jiān)聽CATextField那么我們需要使FirstViewController繼承CATextFieldDelegate并重寫這些函數(shù)。下面我們以常見的登陸界面為例,來講解CATextField的使用方法。

首先看FirstViewController.h文件代碼

#include <iostream>
#include "CrossApp.h"
 
USING_NS_CC;
 
class FirstViewController : public CAViewController, public CATextFieldDelegate
{  
public:
    FirstViewController();
    virtual ~FirstViewController();
     
    //獲得焦點 
    virtual bool onTextFieldAttachWithIME(CATextField * sender);
    //失去焦點
    virtual bool onTextFieldDetachWithIME(CATextField * sender);
    //輸入文本
    virtual bool onTextFieldInsertText(CATextField * sender, const char * text, int nLen);
    //刪除文本
    virtual bool onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen);
    //登錄
    void login(CAControl* control,DPoint point);
     
protected:
    void viewDidLoad(); 
    void viewDidUnload();  
};

然后我們在FirstViewController.cpp中做邏輯實現(xiàn)

#include "FirstViewController.h"
FirstViewController::FirstViewController()
{
}
 
FirstViewController::~FirstViewController()
{
}
 
void FirstViewController::viewDidLoad()
{
    //用戶名文本
    CALabel* nameLabel = CALabel::createWithFrame(DRect(50, 100, 100, 40));
    nameLabel->setText(UTF8("用戶名:"));
    nameLabel->setTextAlignment(CATextAlignmentCenter);
    nameLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
    this->getView()->addSubview(nameLabel);
     
    //密碼文本
    CALabel* passwordLabel = CALabel::createWithFrame(DRect(50, 200, 100, 40));
    passwordLabel->setText(UTF8("密碼:"));
    passwordLabel->setTextAlignment(CATextAlignmentCenter);
    passwordLabel->setVerticalTextAlignmet(CAVerticalTextAlignmentCenter);
    this->getView()->addSubview(passwordLabel);
     
    //創(chuàng)建
    CATextField* nameTF = CATextField::createWithFrame(DRect(200, 100, 300, 40));
     
    //設(shè)置tag
    nameTF->setTag(1);
     
    //設(shè)置提示文本
    nameTF->setPlaceHolder(UTF8("請輸入用戶名"));
     
    //設(shè)置光標顏色
    nameTF->setCursorColor(CAColor_orange);
     
    /*設(shè)置鍵盤類型(真機或模擬器上有效)
    KEY_BOARD_TYPE_NORMAL:普通鍵盤
    KEY_BOARD_TYPE_NUMBER:數(shù)字鍵盤
    KEY_BOARD_TYPE_ALPHABET:字母鍵盤
    */
    nameTF->setKeyboardType(eKeyBoardType::KEY_BOARD_TYPE_ALPHABET);
     
    /*設(shè)置確認鍵的類型(真機或模擬器上有效)
    KEY_BOARD_RETURN_DONE:完成
    KEY_BOARD_RETURN_SEARCH:搜索
    KEY_BOARD_RETURN_SEND:發(fā)送
    */
    nameTF->setKeyboardReturnType(eKeyBoardReturnType::KEY_BOARD_RETURN_DONE);
     
    //綁定代理(設(shè)置代理才能被監(jiān)聽狀態(tài))
    nameTF->setDelegate(this);
     
    //添加渲染
    this->getView()->addSubview(nameTF);
    CATextField* password = CATextField::createWithFrame(DRect(200,200,300,40));
     
    //設(shè)置tag
    password->setTag(2);
     
    //設(shè)置提示文本
    password->setPlaceHolder(UTF8("請輸入密碼"));
     
    //設(shè)置提示文本顏色
    password->setSpaceHolderColor(CAColor_red);
     
    //設(shè)置輸入樣式為密碼格式
    password->setInputType(eKeyBoardInputType::KEY_BOARD_INPUT_PASSWORD);
     
    //添加渲染
    this->getView()->addSubview(password);
     
    //登錄按鈕
    CAButton* loginBtn = CAButton::createWithFrame(DRect(200, 260, 100, 40), CAButtonType::CAButtonTypeRoundedRect);
    loginBtn->setTitleForState(CAControlStateAll, UTF8("登錄"));
    loginBtn->addTarget(this, CAControl_selector(FirstViewController::login), CAControlEventTouchDown);
    this->getView()->addSubview(loginBtn);
}
 
void FirstViewController::viewDidUnload()
{
    // Release any retained subviews of the main view.
    // e.g. self.myOutlet = nil;
}
 
bool FirstViewController::onTextFieldAttachWithIME(CATextField * sender)
{
    //獲得焦點
    CCLog("onTextFieldAttachWithIME--->");
     
    //如果為false獲得焦點時不彈出鍵盤
    return false;
}
 
bool FirstViewController::onTextFieldDetachWithIME(CATextField * sender)
{
    //失去焦點
    CCLog("onTextFieldDetachWithIME--->");
     
    //失去焦點時不移除鍵盤
    return true;
}
 
bool FirstViewController::onTextFieldInsertText(CATextField * sender, const char * text, int nLen)
{
    //輸入時調(diào)用
    CCLog("onTextFieldInsertText--->Text:%s,Len:%d", text, nLen);
     
    //如果為true,控件則不會接受輸入的字符
    return true;
}
 
bool FirstViewController::onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen)
{
    //刪除字符時調(diào)用
    CCLog("onTextFieldDeleteBackward--->Text:%s,Len:%d",delText,nLen);
     
    //如果為true,控件則不刪除受輸入的字符
    return false;
}
 
//登錄
void FirstViewController::login(CAControl* control, DPoint point)
{
    //根據(jù)tag值獲得nameTF 和passwordTF
    CATextField* nameTF = (CATextField*) this->getView()->getSubviewByTag(1);
    CATextField* passwordTF = (CATextField*) this->getView()->getSubviewByTag(2);
     
    //獲得輸入框的內(nèi)容
    string name = nameTF->getText();
    string password = passwordTF->getText();
     
    //如果用戶名為"9miao" 密碼為"123456" 則打印ok否則打印error
    if (strcmp(name.c_str(), "9miao") == 0 &&  strcmp(password.c_str(), "123456") == 0)
    {
            CCLog("OK");
    }
    else
    {
            CCLog("ERROR");
    }
}

這樣我們就實現(xiàn)了一個最簡單的登錄頁面,通過這個demo能過讓更好的理解CATextField的使用方法。


CATextField 屬性介紹     

 BackgroundView

類型:CAView*

解釋:設(shè)置TextField的背景視圖。set/get{}。


CursorColor

類型:CAColor4B

解釋:設(shè)置TextField的光標顏色。set/get{}。


FontName

類型:std::string

解釋:設(shè)置TextField的字體名稱。set/get{}。


FontSize

類型:int

解釋:設(shè)置TextField的字體大小。set/get{}。


HoriMargins

類型:int

解釋:設(shè)置TextField的水平邊緣。set/get{}。


InputType

類型:eKeyBoardInputType

解釋:設(shè)置TextField的輸入類型。set/get{}。

enum eKeyBoardInputType
{
    KEY_BOARD_INPUT_NORMAL = 1,   //正常輸入法  
    KEY_BOARD_INPUT_PASSWORD,     //密碼輸入法
};


PlaceHolder

類型:std::string

解釋:PlaceHolder文本內(nèi)容。set/get{}。


SpaceHolderColor

類型:CAColor4B

解釋:PlaceHolder文本內(nèi)容顏色。set/get{}。


Text

類型:std::string

解釋:設(shè)置TextField的文本內(nèi)容。set/get{}。


TextColor

類型:CAColor4B

解釋:設(shè)置TextField的文字顏色。set/get{}。


TextEditAlign

類型:eTextEditAlign

解釋:設(shè)置TextField的文本編輯對齊。set/get{}。


CharCount

類型:int

解釋:獲取TextField的字符計數(shù)。get{}。

    

Delegate

類型:CATextFieldDelegate*

解釋:設(shè)置TextField的代理(設(shè)置代理才能被監(jiān)聽狀態(tài))。set/get{}。


VertMargins

類型:int

解釋:設(shè)置TextField的垂直邊緣。set/get{}。


CATextField 方法介紹

inline void setKeyboardType (eKeyBoardType type);

返回值:

參數(shù):

類型參數(shù)名說明
eKeyBoardTypetype鍵盤類型

解釋:設(shè)置鍵盤的類型

enum eKeyBoardType
{
    KEY_BOARD_TYPE_NORMAL = 0,  //正常鍵盤
    KEY_BOARD_TYPE_NUMBER,      //數(shù)字鍵盤
    KEY_BOARD_TYPE_ALPHABET,    //字母鍵盤
};

inline int getKeyboardType ();

返回值:inline int

參數(shù):

解釋:獲取鍵盤類型(真機或模擬器上有效)


inline void setKeyboardReturnType (eKeyBoardReturnType type);

返回值:

參數(shù):

類型參數(shù)名說明
eKeyBoardReturnTypetype鍵盤類型

解釋:

<p style="text-indent: 0em;">enum eKeyBoardReturnType<br>{<br>    KEY_BOARD_RETURN_DONE = 21, //確認鍵為完成<br>    KEY_BOARD_RETURN_SEARCH,    //確認鍵為搜索<br>    KEY_BOARD_RETURN_SEND,      //確認鍵為發(fā)送<br>    KEY_BOARD_RETURN_ENTER,     //確認鍵為進入<br>};<br></p>

inline int getKeyboardReturnType ();

返回值:inline int

參數(shù):

解釋:獲取確認鍵的類型(真機或模擬器上有效) 


virtual bool resignFirstResponder();

返回值:bool

參數(shù):

解釋:隱藏鍵盤第一響應(yīng)者狀態(tài)


virtual bool becomeFirstResponder();

返回值:bool

參數(shù):

解釋:彈出鍵盤第一響應(yīng)者狀態(tài)


virtual void resignResponder();

返回值:void

參數(shù):

解釋:隱藏鍵盤狀態(tài)


static CATextField* createWithFrame(const DRect& frame);

返回值:CATextField*

參數(shù):

類型參數(shù)名說明
const DRect& frame區(qū)域大小

解釋:創(chuàng)建,并指定其Frame


static CATextField* createWithCenter(const DRect& rect);

返回值:CATextField* 

參數(shù):

類型參數(shù)名說明
const DRect& rect中心點的位置及大小

解釋:創(chuàng)建,并指定其Center


bool init();

返回值:bool

參數(shù):

解釋:初始化


virtual void setImageRect(const DRect& rect);

返回值:void

參數(shù):

類型參數(shù)名說明
const DRect&rect大小

解釋:設(shè)置圖像大小


virtual void updateImageRect();

返回值:void

參數(shù):

解釋:更新圖像


void setColor(const CAColor4B& var);

返回值:void

參數(shù):

類型參數(shù)名說明
const CAColor4B&var顏色值

解釋:設(shè)置顏色


const CAColor4B& getColor();

返回值:CAColor4B& 

參數(shù):

解釋:獲取顏色

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號