概述 UITextField在界面中顯示可編輯文本區域的對象。 您可以使用文本欄位來使用屏幕鍵盤從用戶收集基於文本的輸入。鍵盤可以配置許多不同類型的輸入,如純文本,電子郵件,數字等等。文本欄位使用目標操作機制和委托對象來報告在編輯過程中所做的更改。 除了基本的文本編輯行為之外,還可以將疊加視圖添加到 ...
概述
UITextField
在界面中顯示可編輯文本區域的對象。- 您可以使用文本欄位來使用屏幕鍵盤從用戶收集基於文本的輸入。鍵盤可以配置許多不同類型的輸入,如純文本,電子郵件,數字等等。文本欄位使用目標操作機制和委托對象來報告在編輯過程中所做的更改。
除了基本的文本編輯行為之外,還可以將疊加視圖添加到文本欄位以顯示其他信息並提供其他可定位控制項。您可以為諸如書簽按鈕或搜索圖標等元素添加自定義疊加視圖。文本欄位提供內置的疊加視圖來清除當前文本。自定義覆蓋視圖的使用是可選的。
屬性和方法
初始化
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(100, 100, 100, 30)];
設置占位文本
textField.placeholder = @"請輸入文字";
設置文本
textField.text = @"測試";
設置文本的顏色
textField.textColor = [UIColor redColor];
設置文本的字體
textField.font = [UIFont systemFontOfSize:14];
設置文本的對齊方式
textField.textAlignment = NSTextAlignmentRight;
設置輸入框不能編輯
[textField setEnabled:NO];
設置編輯框中的內容密碼顯示
textField.secureTextEntry = YES;
啟用文本欄位時顯示的背景圖像。該圖像顯示在文本欄位內容的其餘部分後面。
textField.background = [UIImage imageNamed:@"登錄logo"];
設置邊框樣式(更多邊框樣式到補充說明中查看)預設的樣式為UITextBorderStyleNone
textField.borderStyle = UITextBorderStyleRoundedRect;
設置清除按鈕的模式(更多清除按鈕的模式到補充說明中查看)預設樣式為UITextFieldViewModeNever
textField.clearButtonMode = UITextFieldViewModeUnlessEditing;
文本欄位文本的最小字體大小。當“調整為適合”選項啟用時,文本欄位會自動更改字體大小以確保文本的最大可讀性。您可以使用此屬性來指定您認為適合文本的最小字體大小。
textField.minimumFontSize = 12;
設置鍵盤類型(更多鍵盤類型到補充說明中查看)
textField.keyboardType = UIKeyboardTypeNumberPad;
設置鍵盤上返回鍵的類型(更多返回類型到補充說明中查看)
textField.returnKeyType = UIReturnKeyJoin;
設置鍵盤的視覺樣式(更多鍵盤的視覺效果到補充說明中查看)
textField.keyboardAppearance = UIKeyboardAppearanceLight;
文本欄位的拼寫檢查行為。此屬性決定了拼寫檢查在打字過程中是啟用還是禁用
textField.spellCheckingType = UITextSpellCheckingTypeNo;
此屬性決定了拼寫檢查在打字過程中是啟用還是禁用。啟用拼寫檢查後,文本對象會為所有拼寫錯誤的單詞生成紅色下劃線。如果用戶點擊拼寫錯誤的單詞,則文本對象向用戶呈現可能的更正列表。
此屬性的預設值是default,啟用自動更正時啟用拼寫檢查。此屬性中的值將覆蓋用戶在“設置”>“常規”>“鍵盤”中設置的拼寫檢查設置。
文本欄位的自動糾正行為。此屬性確定在輸入過程中自動更正是啟用還是禁用
textField.autocorrectionType = UITextAutocorrectionTypeYes;
自動大寫樣式適用於鍵入的文本。此屬性決定在什麼時候自動按下Shift
鍵
textField.autocapitalizationType = UITextAutocapitalizationTypeAllCharacters;
設置左邊視圖(註意:需要先設置左邊視圖的顯示模式為UITextFieldViewModeAlways
)
textField.leftViewMode = UITextFieldViewModeAlways; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 20, 20)]; imageView.image = [UIImage imageNamed:@"驗證碼"]; textField.leftView = imageView;
設置右邊視圖(註意:需要先設置右邊視圖的顯示模式為UITextFieldViewModeAlways
)
textField.rightViewMode = UITextFieldViewModeAlways; UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(10, 10, 20, 20)]; imageView.image = [UIImage imageNamed:@"驗證碼"]; textField.rightView = imageView;
代理方法
詢問委托人是否應該在指定的文本欄位中開始編輯。
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField; // return NO to disallow editing.
告訴委托人在指定的文本欄位中開始編輯。
- (void)textFieldDidBeginEditing:(UITextField *)textField; // became first responder
詢問委托人是否應在指定的文本欄位中停止編輯。
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField; // return YES to allow editing to stop and to resign first responder status. NO to disallow the editing session to end
告訴委托人對指定的文本欄位停止編輯。
- (void)textFieldDidEndEditing:(UITextField *)textField; // may be called if forced even if shouldEndEditing returns NO (e.g. view removed from window) or endEditing:YES called
告訴委托人對指定的文本欄位停止編輯。
- (void)textFieldDidEndEditing:(UITextField *)textField reason:(UITextFieldDidEndEditingReason)reason NS_AVAILABLE_IOS(10_0); // if implemented, called in place of textFieldDidEndEditing:
詢問委托人是否應該更改指定的文本。
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string; // return NO to not change text
詢問委托人是否應刪除文本欄位的當前內容。
- (BOOL)textFieldShouldClear:(UITextField *)textField; // called when clear button pressed. return NO to ignore (no notifications)
詢問委托人文本欄位是否應處理按下返回按鈕。
- (BOOL)textFieldShouldReturn:(UITextField *)textField; // called when 'return' key pressed. return NO to ignore.
補充說明
設置UITextField
占位文字的顏色的倆種方法
第一種
KVC修改 如果不先設置占位文字, 占位文字的顏色是不管用的:
textField.placeholder = @"占位字元"; textField setValue:[UIColor redColor] forKeyPath:@"_placeholderLabel.textColor"];
第二種
通過attributedPlaceholder
屬性修改占位文字顏色
NSAttributedString *attrString = [[NSAttributedString alloc] initWithString:@"請輸入占位文字" attributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:textField.font}]; textField.attributedPlaceholder = attrString;
UITextField.
borderStyle 邊框樣式的枚舉以及說明
UITextField 的樣式 | 說明 |
---|---|
UITextBorderStyleNone | 預設樣式,文本欄位不顯示邊框。 |
UITextBorderStyleLine | 在文本欄位周圍顯示一個細長的矩形。 |
UITextBorderStyleBezel | 顯示文本欄位的邊框樣式邊框。此樣式通常用於標準數據輸入欄位。 |
UITextBorderStyleRoundedRect | 顯示文本欄位的圓角樣式邊框。 |
UITextField.
clearButtonMode 清除按鈕的枚舉以及說明
UITextField 清除按鈕模式 | 說明 |
---|---|
UITextFieldViewModeNever | 清除按鈕從不出現。 |
UITextFieldViewModeWhileEditing | 清除按鈕僅在文本欄位中編輯文本時顯示。 |
UITextFieldViewModeUnlessEditing | 清除按鈕僅在文本未被編輯時顯示。 |
UITextFieldViewModeAlways | 如果文本欄位包含文本,則始終顯示清除按鈕 |
UITextField.
keyboardType
鍵盤類型的枚舉以及說明
UITextField 鍵盤類型 | 說明 |
---|---|
UIKeyboardTypeDefault | 指定當前輸入法的預設鍵盤。 |
UIKeyboardTypeASCIICapable | 指定顯示標準ASCII字元的鍵盤。 |
UIKeyboardTypeNumbersAndPunctuation | 指定數字和標點鍵盤。 |
UIKeyboardTypeURL | 指定為URL輸入優化的鍵盤。這種鍵盤類型顯著地以周期(“ .”)和斜杠(“/”)字元和“ .com”字元串為特征。 |
UIKeyboardTypeNumberPad | 指定用於PIN輸入的數字小鍵盤。這種鍵盤類型0通過突出顯示數字9。此鍵盤類型不支持自動大寫。 |
UIKeyboardTypePhonePad | 指定用於輸入電話號碼的鍵盤。這種鍵盤類型顯著地0通過數字9和“ *”和“ #”字元。此鍵盤類型不支持自動大寫。 |
UIKeyboardTypeNamePhonePad | 指定用於輸入個人姓名或電話號碼的小鍵盤。此鍵盤類型不支持自動大寫。 |
UIKeyboardTypeEmailAddress | 指定為輸入電子郵件地址而優化的鍵盤。這種鍵盤類型突出地表現了at(“ @”),句號(“ .”)和空格字元。 |
UIKeyboardTypeDecimalPad | 指定一個帶有數字和小數點的鍵盤。 |
UIKeyboardTypeTwitter | 指定一個針對Twitter文本輸入進行優化的鍵盤,可以方便地訪問at(“ @”)和hash(“ #”)字元。 |
UIKeyboardTypeWebSearch | 指定針對網頁搜索字詞和網址輸入進行優化的鍵盤。這種類型的鍵盤突出顯示了空格和句點(“ .”)字元。 |
UIKeyboardTypeASCIICapableNumberPad | 指定只輸出ASCII數字的數字鍵盤。 |
UIKeyboardTypeAlphabet | 指定為字母輸入而優化的鍵盤。 |
returnKeyType
鍵盤上返回鍵的枚舉和說明
鍵盤上返回鍵的類型 | 說明 |
---|---|
UIReturnKeyDefault | 指定Return鍵的可見標題是“return”。 |
UIReturnKeyGo | 指定Return鍵的可見標題是“Go”。 |
UIReturnKeyGoogle | 指定返回鍵的可見標題是“Google”。 |
UIReturnKeyJoin | 指定Return鍵的可見標題是“Join”。 |
UIReturnKeyNext | 指定Return鍵的可見標題是“Next”。 |
UIReturnKeyRoute | 指定返回鍵的可見標題是“路由”。 |
UIReturnKeySearch | 指定返回鍵的可見標題是“搜索”。 |
UIReturnKeySend | 指定返回鍵的可見標題是“發送”。 |
UIReturnKeyYahoo | 指定返回鍵的可見標題是“Yahoo”。 |
UIReturnKeyDone | 指定返回鍵的可見標題是“完成”。 |
UIReturnKeyEmergencyCall | 指定返回鍵的可見標題是“緊急呼叫”。 |
UIReturnKeyContinue | 指定返回鍵的可見標題是“繼續”。 |
keyboardAppearance
鍵盤的視覺效果的枚舉值和說明
鍵盤的視覺效果 | 說明 |
---|---|
UIKeyboardAppearanceDefault | 指定當前輸入法的預設鍵盤外觀。這個常數對應於該UIKeyboardAppearanceLight 值。 |
UIKeyboardAppearanceDark | 指定適合黑暗UI外觀的鍵盤外觀。 |
UIKeyboardAppearanceLight | 指定適合輕量級UI外觀的鍵盤外觀。 |
UIKeyboardAppearanceAlert = UIKeyboardAppearanceDark | 已經廢棄,指定適用於警報面板的鍵盤外觀。 |
鍵盤相關通知
通知名稱 | 說明 |
---|---|
UIKeyboardWillShowNotification | 鍵盤將要顯示時發出的通知 |
UIKeyboardDidShowNotification | 鍵盤已經顯示發出的通知 |
UIKeyboardWillHideNotification | 鍵盤將要隱藏時發出的通知 |
UIKeyboardDidHideNotification | 鍵盤已經隱藏時發出的通知 |
UIKeyboardWillChangeFrameNotification | 鍵盤的大小即將發生改變時發出的通知 |
UIKeyboardDidChangeFrameNotification | 鍵盤的大小已經發生改變時發出的通知 |
在文本欄位成為第一響應者之前不久,編輯開始,並顯示鍵盤(或其分配的輸入視圖)。編輯流程如下:
- 在成為第一響應者之前,文本欄位調用其委托的方法。使用該方法來允許或阻止編輯文本欄位的內容。
textFieldShouldBeginEditing:
- 文本欄位成為第一響應者。
作為響應,系統顯示鍵盤(或文本欄位的輸入視圖),並根據需要發佈通知。如果鍵盤或其他輸入視圖已經顯示,則系統會改為通知和通知。UIKeyboardWillShowNotification
UIKeyboardDidShowNotification
UIKeyboardWillChangeFrameNotification
UIKeyboardDidChangeFrameNotification
- 文本欄位調用其委托的方法併發布通知。
textFieldDidBeginEditing:UITextField
TextDidBeginEditingNotification
- 文本欄位在編輯期間調用各種委托方法:
每噹噹前的文本改變,它調用該方法併發布通知。textField:shouldChangeCharactersInRange:replacementString:UI
TextFieldTextDidChangeNotification
當用戶點擊內置按鈕清除文本時,它會調用該方法。textFieldShouldClear:
它調用用戶點擊鍵盤的返回按鈕時的方法。textFieldShouldReturn:
- 在辭職作為第一響應者之前,文本欄位調用其委托的方法。使用該方法來驗證當前文本。
textFieldShouldEndEditing:
- 文本欄位作為第一響應者辭職。
作為響應,系統根據需要隱藏或調整鍵盤。當隱藏鍵盤時,系統發佈和通知。UIKeyboardWillHideNotification
UIKeyboardDidHideNotification
- 文本欄位調用其委托的方法併發布通知。
textFieldDidEndEditing:UITextField
TextDidEndEditingNotification
自定義鍵盤
UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, 100)]; redView.backgroundColor = [UIColor redColor]; textField.inputView = redView; textField.textColor = [UIColor redColor];
作者:coder小鵬