您的位置:首页 > 移动开发 > IOS开发

IOS 登陆界面的简单编写(通过NSNotificationCenter)

2016-03-16 13:14 363 查看
在介绍内容的之前,先看一下实现结果。



通过细节可以发现,只有当手机号与密码都输入的情况登录按钮才会变亮。那么这是怎么实现的呢?

首先我们要知道,这种情况的发生的首要条件便是每时每刻都知道两个TextField的text。那么什么方法可以实现呢,有一个十分老笨的方法。那就是通过Nstimer,每秒都检查TextField的text内容。显然这种方法十分消耗内存,实际开发中是不可能采用的,但是对于新手来说,未必不是一种开发大脑的途径。闲话少说,下面介绍今天的主角NSNotificationCenter。

NSNotificationCenter是一种监听机制。

配合UITextFieldTextDidChangeNotification即可实现时刻监听。

由于本文旨在介绍思想,基本知识点我就不介绍了。想要学习的童鞋可以查看其他博客,如有需要也可以评论本文,我会在看到评论的情况下为大家讲解知识点。

代码如下(只是关键所在,控件大家可以自己多动动手):

//
//  ViewController.m
//  CX-login
//
//  Created by ma c on 16/1/22.
//  Copyright (c) 2016年 xubaoaichiyu. All rights reserved.
//

#import "ViewController.h"
#import "CustomerTextField.h"
#import "CustomerButton.h"
@interface ViewController ()
//提供全局变量 TextField
@property (nonatomic, strong) UITextField* textFiledTemp1;
@property (nonatomic, strong) UITextField* textFiledTemp2;
@property (nonatomic, strong) UIButton* btn;
@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
//view背景颜色
self.view.backgroundColor = [UIColor colorWithRed:247/255.0f green:248/255.0f blue:243/255.0f alpha:1];
//设置TextFiled
CustomerTextField* textField1 = [[CustomerTextField alloc]initWithFrame:CGRectMake(40, 50, SCREEN_WIDTH-80, 40) imageName:@"userName" placeholder:@"请输入手机号"];
[self.view addSubview:textField1];
self.textFiledTemp1 = textField1;
//    textField1.keyboardType = UIKeyboardTypeNumberPad;// 键盘type
CustomerTextField* textField2 = [[CustomerTextField alloc]initWithFrame:CGRectMake(40, 120, SCREEN_WIDTH-80, 40) imageName:@"password" placeholder:@"请输入密码"];
textField2.secureTextEntry = YES;
[self.view addSubview:textField2];
self.textFiledTemp2 = textField2;
//设置登录Button
self.btn = [[CustomerButton alloc]initWithFrame:CGRectMake(40, 210, SCREEN_WIDTH-80, 40) backgroundImageName:@"beijing" title:@"登录"];
self.btn.enabled = NO;
[self.view addSubview:self.btn];
[self NotificationCenter];

}

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
[self.view endEditing:YES];
}
//通知中心 监听Textfield
-(void)NotificationCenter{

[[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:nil];

}
// 实现按钮状态转变
-(void)textDidChangeNotification:(NSNotification*)notifi{
if ([self.textFiledTemp1.text isEqualToString:@""]||[self.textFiledTemp2.text isEqualToString:@""]) {
self.btn.enabled = NO;
}
else{
self.btn.enabled = YES;
}
}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: