IOS提供的UI組件很像C#,很多控件都拖動再綁定事件就可以了,但是畢竟系統很死,生成的東西比較死板,所以我們也要經常自己手動寫。在我們創建一個項目後,系統會自動生成一個視圖控制器(ViewController),如果你想操作視圖控制器上的組件,比如添加事件,那麼就應該讓視圖控制器持有界面上的組件,而主面板(Main.storyboard),Main.storyboard也就是我們程序進入後的第一屏。
讓控制器持有我們界面上的組件有很多種方法:
一、直接拖向控制器的頭文件
選中控件,按住command,然後拖向控制器的頭文件,這個時候彈出的對話框,根據自己需要如果是讓控制器持有當前組件,那麼就選擇outlet,如果綁定事件就選擇Action,然後再name中輸入自己屬性的名稱或者方法的名稱。
二、在頭文件中自己編寫屬性再綁定
如上圖所示自己也可以編寫屬性或者方法,但是注意有些屬性名可能和系統的衝突,剛開始我直接寫的是no,一直取不到值
@property (weak,nonatomic)IBOutlet UITextField *qqNo; @property (weak, nonatomic) IBOutletUITextField *pwd; -(IBAction)login; |
如果是自己寫的屬性或者方法也可以在界面上通過選中控件,按住command鏈接你要指向的屬性或者方法
輸入完成退出鍵盤綁定的兩種方式:
一、由鍵盤喚起者也就是第一響應者分發第一響應者
我們在登錄的時候添加一個事件
-(void)login{ NSLog(@"qq號碼是%@QQ密碼是:%@",self.qqNo.text,self.pwd.text); //第一響應者:把鍵盤換出來的控件 //分發第一響應者 // [self.qqNo resignFirstResponder]; //直接退出鍵盤(叫出鍵盤的控件必須是它的子控件或者是它本身) [self.viewendEditing:YES]; } |
二、通過UITextField的代理,讓ViewController實現UITextField的協議UITextFieldDelegate,監聽界面上的return key,還是通過選中控件,按住command把文本框的代理鏈接到ViewController控制器,也就是控制器充當了代理對象。
@protocol UITextFieldDelegate <NSObject>
|
@optional //非必須實現
- (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
- (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; //監聽return key // called when 'return' key pressed. return NO to ignore.
@end
在.m文件中實現該方法 當文本輸入框的return key被點擊的時候被調用
//把當前文本輸入框當做參數傳入 -(BOOL)textFieldShouldReturn:(UITextField *)textField{ NSLog(@"調用..."); //[self.view endEditing:YES]; [textField resignFirstResponder]; return YES; } |
模擬器home鍵快捷鍵:command+shift+h