UITextField 文字欄位控制項-IOS開發

來源:互聯網
上載者:User

進入本文之前建議你認真讀一讀我的另一篇博文《UIControl IOS控制項編程—IOS開發》http://blog.csdn.net/iukey/article/details/7300412 
這樣會起到事半功倍效果

再就是用到UITextField,肯定離不開鍵盤啦,所以還有一片博文推薦:《UIKeyboard鍵盤相關知識點》

為什麼要看另一篇關於UIControl的文章呢?因為UITextField繼承自UIControl類,很多UIControl的屬性、方法、通知等完全適用於UITextField,而那些屬於UIControl的東西我又不會在此贅述。(主要是減輕文章的長度,以最少的文字最通俗易懂講明白一個知識點是我追求的目標。)

建立

UITextField* myTextField = [[UITextField alloc]initWithFrame:CGRectMake(50, 100, 200, 50)];

純程式碼建立View請參看我的另一片博文:《有關View的幾個基礎知識點》http://blog.csdn.net/iukey/article/details/7083165


設定委託

myTextField.delegate = self;//委託類需要遵守UITextFieldDelegate協議


設定屬性

UIControl屬性對UITextField完全可以用,下面的都是UITextFiels擴充的屬性:

    myTextField.textAlignment = UITextAlignmentLeft;//預設就是靠左對齊,這個是UITextField擴充屬性    myTextField.borderStyle = UITextBorderStyleBezel;//預設是沒有邊框,如果使用了自訂的背景圖片邊框會被忽略掉    myTextField.placeholder = @"請在此輸入帳號";//為空白文字欄位繪製一個灰色字串作為預留位置    myTextField.clearsOnBeginEditing = YES;//設定為YES當用點觸文字欄位時,欄位內容會被清除    myTextField.adjustsFontSizeToFitWidth = YES;//設定為YES時文本會自動縮小以適應文字視窗大小。預設是保持原來大小,而讓長文本滾動    //myTextField.background = [UIImage imageNamed:@"registBtn"];//可以接受UIImage對象,此項設定則邊框失效。    myTextField.clearButtonMode = UITextFieldViewModeUnlessEditing;//右邊顯示的'X'清楚按鈕    //myTextField.LeftView =    //myTextField.leftViewMode =     //myTextField.RightView =    //myTextField.rightViewMode =    

    這些屬性令你可以將UIView的衍生類別附著於為本欄位的左方或右方。人們通常會將UIButton對象,比如放大鏡或者書籤按鈕附著與文字欄位上。每個附著視圖都會有一個相應的模式,設定clearButtonmode屬性的那些值,同樣可以設定這個模式。

顯示

 [self.view addSubview:myTextField];


重寫繪製行為

除了UITextField對象的風格選項,你還可以定製化UITextField對象,為他添加許多不同的重寫方法,來改變文字欄位的顯示行為。這些方法都會返回一個CGRect結構,制定了文字欄位每個組件的邊界範圍。如果你創見了一個自訂的UITextField類,你可以重寫這些方法,這樣就可以改變一個或多個邊界。一定不要直接調用 fan廣發;它們都是被iPhone運行庫調用的回呼函數下面舉個例子:

- (CGRect)clearButtonForBounds:(CGRect)bounds{    return CGRectMake(bounds.origin.x +bounds.size.width-50,                       bounds.origin.y+bounds.size.height-20, 16, 16);}

下列方法在建立一個UITextField的子類時可以重寫:

borderRectForBounds

指定矩形邊界

textRectForBounds

 指定顯示文本的邊界

placeholderRectForBounds

指定站位文本的邊界

editingRectForBounds

指定編輯中文本的邊界

clearButtonRectForBounds

指定顯示清除按鈕的邊界

leftViewRectForBounds

指定顯示左附著視圖的邊界

rightViewRectForBounds

指定顯示右附著視圖的邊界


委託方法

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{    //返回一個BOOL值,指定是否循序文字欄位開始編輯    return YES;}
- (void)textFieldDidBeginEditing:(UITextField *)textField{    //開始編輯時觸發,文字欄位將成為first responder}
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField{    //返回BOOL值,指定是否允許文字欄位結束編輯,當編輯結束,文字欄位會讓出first responder    //要想在使用者結束編輯時阻止文字欄位消失,可以返回NO    //這對一些文字欄位必須始終保持活躍狀態的程式很有用,比如立即訊息    return NO;}
- (BOOL)textField:(UITextField*)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{    //當使用者使用自動校正功能,把輸入的文字修改為推薦的文字時,就會調用這個方法。    //這對於想要加入撤銷選項的應用程式特別有用    //可以跟蹤欄位內所做的最後一次修改,也可以對所有編輯做日誌記錄,用作審計用途。       //要防止文字被改變可以返回NO    //這個方法的參數中有一個NSRange對象,指明了被改變文字的位置,建議修改的文本也在其中    return YES;}
- (BOOL)textFieldShouldClear:(UITextField *)textField{    //返回一個BOOL值指明是否允許根據使用者請求清除內容    //可以設定在特定條件下才允許清除內容    return YES;}
-(BOOL)textFieldShouldReturn:(UITextField *)textField{    //返回一個BOOL值,指明是否允許在按下斷行符號鍵時結束編輯    //如果允許要調用resignFirstResponder 方法,這回導致結束編輯,而鍵盤會被收合    [textField resignFirstResponder];//查一下resign這個單詞的意思就明白這個方法了    return YES;}

通知

UITextField派生自UIControl,所以UIControl類中的通知系統在文字欄位中也可以使用。除了UIControl類的標準事件,你還可以使用下列UITextField類特有的事件

UITextFieldTextDidBeginEditingNotification

UITextFieldTextDidChangeNotification

UITextFieldTextDidEndEditingNotification

當文字欄位退出編輯模式時觸發。通知的object屬性儲存區了最終文本。

因為文字欄位要使用鍵盤輸入文字,所以下面這些事件發生時,也會發送動作通知

UIKeyboardWillShowNotification

鍵盤顯示之前發送

UIKeyboardDidShowNotification

鍵盤顯示之後發送

UIKeyboardWillHideNotification

鍵盤隱藏之前發送

UIKeyboardDidHideNotification

鍵盤隱藏之後發送

開啟鍵盤捲動文字欄位

鍵盤彈出有可能遮住文字欄位,所以我們要讓視圖整體上移一定距離,關於這個請參看我有一篇文章專門來講這個問題:

《開啟鍵盤遮住View的問題解決方案-IOS開發》

把寫文章時敲的代碼附上UITextField 文字欄位控制項Demo

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.