CATextField(輸入框1.2以前版本)

2018-09-08 18:32 更新

類說明

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


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

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


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

函數(shù)說明
setKeyboardType設(shè)置鍵盤的類型(真機(jī)或模擬器上有效)
getKeyboardType獲取鍵盤類型(真機(jī)或模擬器上有效)
setKeyboardReturnType設(shè)置確認(rèn)鍵的類型(真機(jī)或模擬器上有效)  
getKeyboardReturnType獲取確認(rèn)鍵的類型(真機(jī)或模擬器上有效)  
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接受用戶輸入文本時(shí),我們有時(shí)候希望獲得用戶的操作行為,比如CATextField獲得焦點(diǎn)、CATextField失去焦點(diǎn)、用戶輸入字符、用戶刪除字符,這樣我們可以對用戶的操作進(jìn)行邏輯處理,比如限制輸入內(nèi)容,輸入字符長度等。那么如何才能監(jiān)聽到CATextField的改變呢?我們需要了解一下啊CATextFieldDelegate,它主要使用的有四個(gè)函數(shù)分別是:

//獲得焦點(diǎn)   
virtual bool onTextFieldAttachWithIME(CATextField * sender);   
 
//失去焦點(diǎn)   
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();
     
    //獲得焦點(diǎn) 
    virtual bool onTextFieldAttachWithIME(CATextField * sender);
    //失去焦點(diǎn)
    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中做邏輯實(shí)現(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è)置光標(biāo)顏色
    nameTF->setCursorColor(CAColor_orange);
     
    /*設(shè)置鍵盤類型(真機(jī)或模擬器上有效)
    KEY_BOARD_TYPE_NORMAL:普通鍵盤
    KEY_BOARD_TYPE_NUMBER:數(shù)字鍵盤
    KEY_BOARD_TYPE_ALPHABET:字母鍵盤
    */
    nameTF->setKeyboardType(eKeyBoardType::KEY_BOARD_TYPE_ALPHABET);
     
    /*設(shè)置確認(rèn)鍵的類型(真機(jī)或模擬器上有效)
    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)
{
    //獲得焦點(diǎn)
    CCLog("onTextFieldAttachWithIME--->");
     
    //如果為false獲得焦點(diǎn)時(shí)不彈出鍵盤
    return false;
}
 
bool FirstViewController::onTextFieldDetachWithIME(CATextField * sender)
{
    //失去焦點(diǎn)
    CCLog("onTextFieldDetachWithIME--->");
     
    //失去焦點(diǎn)時(shí)不移除鍵盤
    return true;
}
 
bool FirstViewController::onTextFieldInsertText(CATextField * sender, const char * text, int nLen)
{
    //輸入時(shí)調(diào)用
    CCLog("onTextFieldInsertText--->Text:%s,Len:%d", text, nLen);
     
    //如果為true,控件則不會接受輸入的字符
    return true;
}
 
bool FirstViewController::onTextFieldDeleteBackward(CATextField * sender, const char * delText, int nLen)
{
    //刪除字符時(shí)調(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");
    }
}

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


CATextField 屬性介紹     

 BackgroundView

類型:CAView*

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


CursorColor

類型:CAColor4B

解釋:設(shè)置TextField的光標(biāo)顏色。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的字符計(jì)數(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ù):

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


inline void setKeyboardReturnType (eKeyBoardReturnType type);

返回值:

參數(shù):

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

解釋:

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

inline int getKeyboardReturnType ();

返回值:inline int

參數(shù):

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


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中心點(diǎn)的位置及大小

解釋:創(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

公眾號
微信公眾號

編程獅公眾號