類說明
CATextField是單行輸入框控件。主要接收用戶的文本輸入,多用于用戶名、密碼、聊天輸入等。(1.1版本)
CATextField 屬性 (點(diǎn)擊屬性名可查看屬性介紹)
屬性 | 說明 |
BackgroundView | TextField的背景視圖 |
CursorColor | TextField的光標(biāo)顏色 |
FontName | TextField的字體名稱 |
FontSize | TextField的字體大小 |
HoriMargins | TextField的水平邊緣 |
InputType | TextField的輸入類型 |
PlaceHolder | PlaceHolder文本內(nèi)容 |
SpaceHolderColor | PlaceHolder文本內(nèi)容顏色 |
Text | TextField的文本內(nèi)容 |
TextColor | TextField的文字顏色 |
TextEditAlign | TextField的文本編輯對齊 |
CharCount | TextField的字符計(jì)數(shù) |
Delegate | TextField的代理(設(shè)置代理才能被監(jiān)聽狀態(tài)) |
VertMargins | TextField的垂直邊緣 |
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 屬性介紹
類型:CAView*
解釋:設(shè)置TextField的背景視圖。set/get{}。
類型:CAColor4B
解釋:設(shè)置TextField的光標(biāo)顏色。set/get{}。
類型:std::string
解釋:設(shè)置TextField的字體名稱。set/get{}。
類型:int
解釋:設(shè)置TextField的字體大小。set/get{}。
類型:int
解釋:設(shè)置TextField的水平邊緣。set/get{}。
類型:eKeyBoardInputType
解釋:設(shè)置TextField的輸入類型。set/get{}。
enum eKeyBoardInputType
{
KEY_BOARD_INPUT_NORMAL = 1, //正常輸入法
KEY_BOARD_INPUT_PASSWORD, //密碼輸入法
};
類型:std::string
解釋:PlaceHolder文本內(nèi)容。set/get{}。
類型:CAColor4B
解釋:PlaceHolder文本內(nèi)容顏色。set/get{}。
類型:std::string
解釋:設(shè)置TextField的文本內(nèi)容。set/get{}。
類型:CAColor4B
解釋:設(shè)置TextField的文字顏色。set/get{}。
類型:eTextEditAlign
解釋:設(shè)置TextField的文本編輯對齊。set/get{}。
類型:int
解釋:獲取TextField的字符計(jì)數(shù)。get{}。
類型:CATextFieldDelegate*
解釋:設(shè)置TextField的代理(設(shè)置代理才能被監(jiān)聽狀態(tài))。set/get{}。
類型:int
解釋:設(shè)置TextField的垂直邊緣。set/get{}。
CATextField 方法介紹
inline void setKeyboardType (eKeyBoardType type);
返回值:
參數(shù):
類型 | 參數(shù)名 | 說明 |
eKeyBoardType | type | 鍵盤類型 |
解釋:設(shè)置鍵盤的類型
enum eKeyBoardType
{
KEY_BOARD_TYPE_NORMAL = 0, //正常鍵盤
KEY_BOARD_TYPE_NUMBER, //數(shù)字鍵盤
KEY_BOARD_TYPE_ALPHABET, //字母鍵盤
};
返回值:inline int
參數(shù):
解釋:獲取鍵盤類型(真機(jī)或模擬器上有效)
inline void setKeyboardReturnType (eKeyBoardReturnType type);
返回值:
參數(shù):
類型 | 參數(shù)名 | 說明 |
eKeyBoardReturnType | type | 鍵盤類型 |
解釋:
<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
參數(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
參數(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è)置顏色
返回值:CAColor4B&
參數(shù):
解釋:獲取顏色
更多建議: