ios開發UI篇—UITextfield

来源:https://www.cnblogs.com/jiuyi/archive/2019/03/05/10479616.html
-Advertisement-
Play Games

概述 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小鵬


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • select count(欄位) from 表名; #得到欄位中is not null的行數 select count(*)from 表名; #任何列,只要有一個非null就會被統計上。全為null(不會出現該情況)則不被統計。用於統計表的行數 select count(1) from 表名; #統 ...
  • case函數的使用一:switch case 的效果 /* Java中 switch(變數或表達式){ case 常量1:語句1:break; ... default:語句n;break; } MySQL中 case 要判斷的欄位或表達式 #將switch替換成case when 常量1 then ...
  • alter table sc add GPA float; --加入績點列 alter table sc add number int identity(1,1);--將表按原始位置順序編號(可加可不加) alter table sc add primary key(number) declare ...
  • windows系統 下載地址:https://dev.mysql.com/downloads/mysql/ 1、 下載解壓 2、配置環境變數 3、打開剛剛解壓的文件夾 D:\mysql-8.0.15-winx64 ,新建D:\mysql-8.0.15-winx64\data在該文件夾下創建 my.i ...
  • 1.兩台伺服器,主伺服器,從伺服器,兩台伺服器都安裝SQL Server 2008R2並且安裝相同表結構的資料庫(需要實時同步的資料庫) 2.主伺服器資料庫安裝完畢,打開SQL Server 配置管理器,把SQL Server 代理服務打開(已打開請忽略) 3.登錄主伺服器資料庫,從資料庫左側菜單欄 ...
  • 1、進MySQL之後, 2、輸入以下語句,進入mysql庫: use mysql3、更新域屬性,'%'表示允許外部訪問: update user set host='%' where user ='root';4、執行以上語句之後再執行: FLUSH PRIVILEGES;5、再執行授權語句: GR ...
  • 事務註意事項:事務里不能包含事務,也就是說當存儲過程調用存儲過程的時候,外層存儲過程有事務時,被調用的存儲過程不能寫事務,不然事務回滾不了。 ...
  • 概述 UILabel類實現了一個只讀文本視圖。你可以使用這個類來畫一個或多個靜態文本.UILabel類支持既簡單又複雜的樣式標簽文本,還可以控制外觀,比如標簽是否使用了一個影子或者處於高亮狀態等等. UILabel類繼承自UIView 屬性 創建UILabel對象 UILabel *label = ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...