搭建好了界面,先来看登录界面LWLoginViewController
声明了两个输入框和一个登录按钮
@interface LWLoginViewController ()<UITextFieldDelegate>
@property (weak, nonatomic) IBOutletUITextField *loginText;
@property (weak, nonatomic) IBOutletUITextField *passwordText;
@property (weak, nonatomic) IBOutletUIButton *loginBtn;
@end
1.在LWLoginView中 两个文本框中实现一下代理方法
在.m文件中实现如下代码:
- (void)viewDidLoad {
[superviewDidLoad];
self.loginText.delegate =self;
}
#pragma 实现协议方法
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string{
return NO;
}
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField{
return NO;
}
可以看到 password输入框是可以点击的,但是login输入框是不可以点击的
下面言归正传 首先,实现输入用户名和密码 点击登录功能 实现如下代码:
- (void)viewDidLoad {
[superviewDidLoad];
//1.拿到通知中心
NSNotificationCenter *center = [NSNotificationCenterdefaultCenter];
//2.注册通知
[center addObserver:selfselector:@selector(TextChanged)name:UITextFieldTextDidChangeNotificationobject:self.loginText];
[center addObserver:selfselector:@selector(TextChanged)name:UITextFieldTextDidChangeNotificationobject:self.passwordText];
}
- (void)TextChanged{
//判断是否同时输入了账号密码
self.loginBtn.enabled = (self.loginText.text.length && self.passwordText.text.length);
}
- (IBAction)hiddenKeyBoardBtn {
if (self.loginText.isFirstResponder) {
[self.loginTextresignFirstResponder];
}else{
[self.passwordTextresignFirstResponder];
}
}
在ViewDidload里面 ,注册了两个通知来监听文本框的内容是否发生了改变,在selector实现的方法里,我们做了一个操作,只有当两个文本框的内容都不为空时,登录按钮的enable才为YES 另外 点击隐藏键盘的按钮 键盘便会判断当前两个文本框到底谁是第一响应着 然后隐藏 点击登录 跳转到联系人界面,这个操作是在storyboard里面做的,也就是无条件的跳转PS 在模拟器上运行的时候 如果不出现键盘 可以按cmd+shift +k 切换模拟器键盘 和电脑键盘
下面实现下记住密码 和自动登录的功能 实现代码如下 :
/*两个滑块值发生改变 都调用这个方法*/
[self.remPWD addTarget:self action:@selector(PWDSwitchChanged) forControlEvents:UIControlEventValueChanged];
[self.autoLogin addTarget:self action:@selector(AutoSwitchChanged) forControlEvents:UIControlEventValueChanged];
/*当Switch改变的时候*/
- (void)PWDSwitchChanged{
/*记住密码滑块 关*/
if (!self.remPWD.isOn) {
NSLog(@"没有记住密码");
self.autoLogin.on = NO;
}
}
- (void)AutoSwitchChanged{
/*自动登录 开*/
if (self.autoLogin.isOn) {
NSLog(@"自动登录打开");
self.remPWD.on = YES;
}
}
- (IBAction)remChanged:(UISwitch *)sender {
/*记住密码滑块 关*/
if (!self.remSwitch.isOn) {
NSLog(@"没有记住密码");
self.autoSwitch.on = NO;
}
}
- (IBAction)autoChanged:(UISwitch *)sender {
/*自动登录 开*/
if (self.autoSwitch.isOn) {
NSLog(@"自动登录打开");
self.remSwitch.on = YES;
}
}
- (IBAction)remChanged:(UISwitch *)sender {
/*记住密码滑块 关*/
if (!self.remSwitch.isOn) {
NSLog(@"没有记住密码");
// self.autoSwitch.on = NO;
[self.autoSwitch setOn:NO animated:YES];
}
}
- (IBAction)autoChanged:(UISwitch *)sender {
/*自动登录 开*/
if (self.autoSwitch.isOn) {
NSLog(@"自动登录打开");
// self.remSwitch.on = YES;
[self.remSwitch setOn:YES animated:YES];
}
}