一、UITextField
1、UITextField是什么?
(1)UITextField(輸入框):是控制文本輸入和顯示的控件。在App中UITextField出現頻率也比較高;
(2)iOS系統借助虛擬鍵盤實現輸入,當點擊輸入框,系統會自動調出鍵盤,方便 你進一步操作。在你不需要輸入的時候,可以使用收回鍵盤的方法,收回彈出的鍵盤;
(3)UITextField和UILabel相比,UILabel主要用于文字顯示,不能編輯, UITextField允許用戶編輯文字(輸入)。
2、如何使用UITextField?
(1)創建UITextField與創建UILabel的步驟很相似。
①開辟空間并初始化(如果本類有初始化方法,使用自己的;否則使用父類的);
②設置文本顯示、輸入相關的屬性;
?、厶砑拥礁敢晥D上,用以顯示;
?、茚尫?。
3、UITextField使用示例:
UITextField *userNameTextField = [[UITextField alloc]initWithFrame:CGRectMake(100, 100, 190, 30)];
userNameTextField.borderStyle =UITextBorderStyleRoundedRect;
userNameTextField.placeholder = @"手機號/郵箱";
[containerView addSubview:userNameTextField];
[userNameTextField release];
4、UITextField更多:
(1)UITextField核心功能主要包含3個方面:
?、傥谋撅@示 ②輸入控制 ③外觀配置
5、文本顯示:
(1)UITextField提供了許多API方便我們控制文本的顯示。 包括字體顏色、對齊方式、占位符等等(詳見下表)
6、輸入控制:
(1)UITextField類提供了許多控制輸入的API。 包括密碼模式、鍵盤樣式、自定義鍵盤等(詳見下表)
7、外觀控制:
UITextField同樣提供了外觀控制的API。 包括邊框樣式、清除按鈕、輔助視圖等;
二、UIButton
1、UIButton是什么?
(1)UIButton(按鈕):是響應用戶點擊的控件。在App中UIButton是出現頻率很高的控件;
(2)UIButton與UILabel、UITextField側重點不同,側重于處理點按。當然UIButton類也提供了一些方法控制按鈕外觀。
2、如何使用UIButton?
(1)創建UIButton與創建UILabel、UITextField、UIView的步驟很相似。
?、賱摻╞utton對象(如果本類有初始化方法,使用自己的;否則使用父類的);
?、谠O置按鈕顯示相關的屬性;
?、蹫榘粹o添加點擊事件;
?、芴砑影粹o到父視圖上,用以顯示;
?、莅粹o無需釋放(因為使用的是類方法創建的button)。
3、UIButton使用示例:
UIButton *loginButton = [UIButton buttonWithType:UIButtonTypeSystem];
loginButton.frame = CGRectMake(30, 200, 60, 30);
[loginButton setTitle:@"登錄" forState:UIControlStateNormal];
[loginButton addTarget:self action:@selector(login:) forControlEvents:UIControlEventTouchUpInside];
[containerView addSubview:loginButton];
4、UIButton添加事件:
(1)UIButton從父類UIControl那繼承了控制相關的方法,比如添加事件、移除事件等。
注:UIButton : UIControl : UIView(詳見下表)
5、外觀控制:
(1)UIButton提供了外觀控制的API。 包括標題、背景圖?片、前景圖?片等(詳見下表)
6、小節:
(1)UIView是所有可視化控件的基類;
(2)UILabel、UITextField、UIButton是具有特定外觀特定功能的視圖;
(3)UILabel側重于文本的呈現;
(4)UITextField側重于輸入;
(5)UIButton側重于點擊事件處理。
三、delegate
1、點return回收鍵盤:
(1)點擊鍵盤return按鈕實現鍵盤回收的步驟:
①將AppDelete作為UITextField的delegate;
②AppDelete.h文件接受UITextFieldDelegate協議;
?、跘ppDelete.m文件實現textFieldShouldReturn:方法)。
2、鍵盤回收代碼:
AppDelegate.m
1 - (BOOL)textFieldShouldReturn:(UITextField *)textField2 {3 [textField resignFirstResponder];4 5 return YES;6 }
3、小節:
(1)UITextField不應該在類內部(.m文件)實現textFieldShouldReturn:, 因為有時候,我們點return的時候,并不總是想回收鍵盤,例如:有兩個輸入框,第一個輸入框輸入完成之后,用戶點return按鈕,將光標移動到第二個輸入框(即:第二個輸入框稱為第一響應者);
(2)對于一個V來說,自己只負責觸發事件,事件由外界實現,即 delegate。
四、iOS程序啟動流程
1、mian函數是程序入口:
(1)任何一個程序,無論是基于Mac OS還是iOS,程序都是從main.m文件的main函數開始執行的。
2、UIapplicationMain:
(1)UIApplicationMain在程序入口函數main函數中調用,主要實現了3個功能:
①創建應用程序(UIApplication)實例;
?、趧摻☉贸绦虼韺嵗?;
?、劢⑹录h(runloop:死循環,不斷檢測程序運行狀態,是否被觸摸、晃動等)。
3、UIApplicationMain剖析:
int UIApplicationMain ( int argc; char *argv[]; NSString *PRincipalClassName; NSString *delegateClassName);
(1)principalClassName:應用程序對象的類名(UIApplication或其子類);
(2)delegateClassName:應用程序delegate的類名。(任何接受了 UIApplicationDelegate的類)! UIApplicationMain根據上述兩個類名創建應用程序實例、應用程序代理實例。然后建立事件循環(runloop),檢測程序的各種事件(程序開始啟動,接收到觸 摸等等)。
4、應用程序代理:
(1)應用程序代理,主要檢測應用程序的狀態并做出相應的處理;
(2) 應用程序的狀態有很多,比如:程序啟動、進入活躍狀態、進到后臺、內存警告、收到遠程消息等等;
(3)任何接受了UIApplicationDelegate協議的對象都可以成為應用程序代理;
(4)一旦應用程序的某種狀態觸發,就會執行相應的代理方法。
5、UIApplicationDelegate:
UIApplicationDelegate是一個OC的協議。里面聲明了一堆方法,這些方法都與應用程序運行狀態有關,它們由應用程序代理實現。UIApplication 對象負責調用。(詳見下表)
6、UIWindow:
(1)UIWindow作為應用程序的窗口,在應用程序啟動的時候就要加載,各種UI界面都是借助window來呈現的;
(2)UIWindow在創建的時候,應該和屏幕一樣大。通過[UIScreen mainScreen].bounds可以獲得屏幕大??;
(3)[self.window makeKeyAndVisible];//讓window變的可視,即顯示 window。
五、總結
(1)UILabel、UITextField、UIButton都是特別常用的控件;
(2)他們都是直接或者間接繼承于UIView,只是外觀和功能不同;
(3)熟悉各種控件的特點和方法是我們后期做項目的保障;
(4)delegate是iOS重要的設計模式,理解它的原理,有助于寫出優質代碼;
(5)main函數是程序的入口。UIApplicationMain函數創建了應用程序實例,應 用程序代理實例,建立事件循環。
六、下一篇將持續更新配套知識點練習;
Email:dingding3w@126.com
新聞熱點
疑難解答