iOS開發(fā)——定制UITextField

在iOS中UITextField這個(gè)控件作為文本輸入控件一定是使用率最高的幾個(gè)控件之一,而iOS提供的默認(rèn)的原始TextField的造型肯定在開發(fā)時(shí)很難滿足我們的要求,原因很簡單,不夠美觀,實(shí)在太單調(diào)。所以今天我們從一些簡單的復(fù)寫UITextField方法開始,來講一講如何定制一個(gè)屬于自己的UITextField。

之前的文章我們講過UITextField中,如何設(shè)置leftView,圓角以及控制文字輸入時(shí)的距離。今天我們主要從UITextField的鍵盤收起、placeholder的設(shè)置以及自定義距離、字體,以及控制輸入文本時(shí),距離UITextField邊框的距離和UITextField中一些常用的方法和枚舉變量等方面來闡述如何定制自己的UITextField。

鍵盤的收起

首先我們先來看UITextField的鍵盤彈出和回收,UITextField在默認(rèn)的情況下,鍵盤在輸入完成后是不會自動回收的,這里我們講解如何在按下Return鍵時(shí),鍵盤自動回收。首先我們要遵循<UITextFieldDelegate>協(xié)議,之后在后面寫入

- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    [textField resignFirstResponder];
    return YES;
}

通過寫入這個(gè)方法,來實(shí)現(xiàn)按下Return按鈕回收鍵盤。

placeholder的設(shè)置

在一些特定功能的文本輸入框,我們常常要設(shè)置placeholder屬性來指明當(dāng)期UITextField的功能,例如:請?jiān)诖颂庉斎朊艽a。可是placeholde的默認(rèn)屬性是緊貼文本輸入框的,而且字體以及字體大小也不美觀,于是我們可以這么來設(shè)置placeholder


//控制placeHolder的位置,左右縮20
-(CGRect)placeholderRectForBounds:(CGRect)bounds
{
        return CGRectInset(bounds, 20, 4);
}

//控制左視圖位置
- (CGRect)leftViewRectForBounds:(CGRect)bounds
{

    return CGRectInset(bounds,0,0);
}

//控制編輯文本的位置
-(CGRect)editingRectForBounds:(CGRect)bounds
{
    return CGRectInset( bounds, 20, 0);
}

//控制顯示文本的位置
-(CGRect)textRectForBounds:(CGRect)bounds
{
    return CGRectInset(bounds, 20, 0);
}

我們可以先如上面的代碼一樣,設(shè)置placeholder的位置,同時(shí)要注意的一點(diǎn)是,在設(shè)置了placeholder的位置之后,我們也要相應(yīng)的調(diào)整文本顯示的位置,以及在編輯完成后,文本顯示在輸入框的位置。

至于placeholder的字體和字體大小設(shè)置 可以用如下方法設(shè)置,記住這個(gè)方法寫在子類化的UITextField中是沒有效果的,一定要寫在創(chuàng)建UITextField的過程中。

    [TextField setValue:[UIFont fontWithName:@"Arial" size:12]   forKeyPath:@"_placeholderLabel.font"];

UITextField中一些常用的屬性以及枚舉變量

UITextFieldBorder 邊框設(shè)置

設(shè)置TextField的邊框效果,一定要設(shè)置了才有效果,類型如下


typedef NS_ENUM(NSInteger, UITextBorderStyle) {
    UITextBorderStyleNone,
    UITextBorderStyleLine,
    UITextBorderStyleBezel,
    UITextBorderStyleRoundedRect
};

UITextFieldViewMode

此屬性用來定義我們之前講的leftView和rightView的存在時(shí)機(jī)

typedef NS_ENUM(NSInteger, UITextFieldViewMode) {
    UITextFieldViewModeNever,
    UITextFieldViewModeWhileEditing,
    UITextFieldViewModeUnlessEditing,
    UITextFieldViewModeAlways
};

UIReturnKeyType返回按鈕類型

在鍵盤上的返回按鍵,系統(tǒng)也給我們提供了一些常用的類型

typedef NS_ENUM(NSInteger, UIReturnKeyType) {
    UIReturnKeyDefault,
    UIReturnKeyGo,
    UIReturnKeyGoogle,
    UIReturnKeyJoin,
    UIReturnKeyNext,
    UIReturnKeyRoute,
    UIReturnKeySearch,
    UIReturnKeySend,
    UIReturnKeyYahoo,
    UIReturnKeyDone,
    UIReturnKeyEmergencyCall,
    UIReturnKeyContinue NS_ENUM_AVAILABLE_IOS(9_0),
};

UIKeyboardType鍵盤類型

typedef NS_ENUM(NSInteger, UIKeyboardType) {
    UIKeyboardTypeDefault,       

    UIKeyboardTypeASCIICapable,      

    UIKeyboardTypeNumbersAndPunctuation, 

    UIKeyboardTypeURL,    

    UIKeyboardTypeNumberPad,  

    UIKeyboardTypePhonePad,             

    UIKeyboardTypeNamePhonePad, 

    UIKeyboardTypeEmailAddress,
  
    UIKeyboardTypeDecimalPad ,

    UIKeyboardTypeWebSearch ,

    UIKeyboardTypeAlphabet = UIKeyboardTypeASCIICapable, 
};
//輸入框中是否有個(gè)叉號,在什么時(shí)候顯示,用于一次性刪除輸入框中的內(nèi)容
  text.clearButtonMode = UITextFieldViewModeAlways;

//每輸入一個(gè)字符就變成點(diǎn) 用語密碼輸入
  text.secureTextEntry = YES;

//是否糾錯(cuò)
  text.autocorrectionType = UITextAutocorrectionTypeNo;
 
typedef enum {
    UITextAutocorrectionTypeDefault, 默認(rèn)
    UITextAutocorrectionTypeNo,   不自動糾錯(cuò)
    UITextAutocorrectionTypeYes,  自動糾錯(cuò)
} UITextAutocorrectionType;
 
//再次編輯就清空
  text.clearsOnBeginEditing = YES; 

//設(shè)置為YES時(shí)文本會自動縮小以適應(yīng)文本窗口大小.默認(rèn)是保持原來大小,而讓長文本滾動  
  textFied.adjustsFontSizeToFitWidth = YES;
 
//首字母是否大寫
  text.autocapitalizationType = UITextAutocapitalizationTypeNone;
 
typedef enum {
    UITextAutocapitalizationTypeNone, 不自動大寫
    UITextAutocapitalizationTypeWords,  單詞首字母大寫
    UITextAutocapitalizationTypeSentences,  句子的首字母大寫
    UITextAutocapitalizationTypeAllCharacters, 所有字母都大寫
} UITextAutocapitalizationType;


 //鍵盤外觀
textView.keyboardAppearance=UIKeyboardAppearanceDefault;
typedef enum {
UIKeyboardAppearanceDefault, 默認(rèn)外觀,淺灰色
UIKeyboardAppearanceAlert,     深灰 石墨色
 
} UIReturnKeyType;
 

大體屬性已經(jīng)羅列完畢,以后想到再來補(bǔ)充

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容