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