在介绍内容的之前,先看一下实现结果。

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

首先我们要知道,这种情况的发生的首要条件便是每时每刻都知道两个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:/255.0f green:/255.0f blue:/255.0f alpha:];
//设置TextFiled
CustomerTextField* textField1 = [[CustomerTextField alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, ) imageName:@"userName" placeholder:@"请输入手机号"];
[self.view addSubview:textField1];
self.textFiledTemp1 = textField1;
// textField1.keyboardType = UIKeyboardTypeNumberPad;// 键盘type
CustomerTextField* textField2 = [[CustomerTextField alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, ) imageName:@"password" placeholder:@"请输入密码"];
textField2.secureTextEntry = YES;
[self.view addSubview:textField2];
self.textFiledTemp2 = textField2;
//设置登录Button
self.btn = [[CustomerButton alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, ) 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

IOS 登陆界面的简单编写(通过NSNotificationCenter)的更多相关文章

  1. ios登陆界面

    代码较老,仅供参考 主要涉及的功能点有: 1.密码输入框要隐藏输入字符,以黑点代替,有时候会在边上设置一个按钮,让用户选择是否需要密文输入 2.Login时会检查输入框,若输入不合法,弹窗提示用户 3 ...

  2. 20个ios登陆界面

    原文:http://favbulous.com/post/1001/24-unique-ios-login-screen-showcase Eeve Evernote Food Recood Hips ...

  3. 用asp连接Access数据库 制作简单登陆界面

    [题外话:最近做Internet作业,在这写一个适合初学入门的ASP连接ACCESS数据库做登陆界面的简单的例子,以慰藉我一口气把以前做过的系统中的PHP代码全改成ASP代码来临时应付作业的心情... ...

  4. C#登陆界面学习编写 2018.08.03

    简单的登陆界面的编写,在编写如下界面时,设置错误次数上限需要用到静态变量 public static int count;//计算错误次数(为静态变量) 可以防止点击登陆后次数被清空,在登陆后打开新的 ...

  5. Eclipse通过jdbc连接数据库制作简单登陆界面

    一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...

  6. ios swift模仿qq登陆界面,xml布局

    给大家推荐两个学习的地址: 极客学院的视频:http://www.jikexueyuan.com/path/ios/ 一个博客:http://blog.csdn.net/lizhongfu2013/a ...

  7. 🈲Eclipse通过jdbc连接数据库制作简单登陆界面【新手必看】

    一.前言: 做网站开发,要求有多种搭配方式,前台技术可以使用PHP.ASP.JSP.ASP.NET.CGI等任何一种: 需要用到的基础语言用的最多的就是HTML/CSS.JS.JAVA.XML这些了, ...

  8. Web 登陆界面---简单模块1

    今天学习登陆界面的基本模块,其中几个基本的元素 a元素.form元素.布局元素(table\tr\td).加粗(b).input元素 1.<a href="">内容&l ...

  9. 一个简单WPF登陆界面,包含记住密码,自动登录等功能,简洁美观

    简介:这是一个自己以前用WPF设计的登陆界面,属于一个实验性的界面窗体,如果用于产品还很有不足.但也是有一点学习价值.后台代码略有复杂,但基本上都有注释 分类,略有代码经验的一般都能看懂. 登陆界面外 ...

随机推荐

  1. 关于FileStream读取大文件问题

    小的文本文件(100M以下)直接用File类的ReadAllText()和WriteAllText()方法 这两个方法内部其实就是封装了StreamReader类的ReadToEnd()和Stream ...

  2. yousa_team团队项目——兼职平台网站 工作进度

    4月31 初步设计网站界面,功能以及数据库关系图 网站包括登陆注册界面,商家和学生都有个人主页,查看兼职信息界面和反馈界面,管理员有查看反馈界面,查看兼职市场,管理后台界面 登录注册界面实现用户的登陆 ...

  3. [前端]npm安装慢,换用淘宝的镜像

    镜像使用方法(三种办法任意一种都能解决问题,建议使用第三种,将配置写死,下次用的时候配置还在): 通过config命令 npm config set registry https://registry ...

  4. EPANET源码中用到的几个简单C语言函数介绍三

    引自input2.C int  getfloat(char *s, double *y)/***---------------------------------------------------- ...

  5. Mysql学习笔记(六)增删改查

    PS:数据库最基本的操作就是增删改查了... 学习内容: 数据库的增删改查 1.增...其实就是向数据库中插入数据.. 插入语句 insert into table_name values(" ...

  6. Android下拉刷新底部操作栏的隐藏问题

    最近自己编写下拉刷新的时候,发现了一个问题,就是有一个需求是这样的:要求页面中是一个Tab切换界面,一个界面有底部操作栏,不可下拉刷新,另一个界面没有底部操作栏,但可以下拉刷新. 按照平常的做法,我在 ...

  7. [Solution] ASP.NET Identity(2) 空的项目使用

    在本节中,我将说明将ASP.NET Identity添加到现有的项目或者一个空项目.我将介绍你需要添加的Nuget和Class.此示例中,会使用LocalDB. 本节目录: 注册用户 登入登出 注册用 ...

  8. “康园圈--互联网+校园平台“项目之sprint1总结

    一.团队成员     梁植淋,官郅豪,纪焓,詹耀海 二.目前进度       在全体组员的努力下,目前完成了项目的<设计方案书>.<功能需求书>.框架搭建.项目部署文档. 并成 ...

  9. C#类的一些概念

    一.概念 1.类的作用是来模拟现实对象的,一个现实对象可以从两个地方进行描述:特征和行为. 2.类不是你凭空想象的,它只是描述现实对象具体的特征和行为的. 3我们写类只需要写我们所需要的. 4.类是提 ...

  10. SQL Server中@@ROWCOUNT的用法

    SQL Server中@@ROWCOUNT返回受上一语句影响的行数,返回值类型为 int 整型. 如果行数大于 20 亿,则需要使用 ROWCOUNT_BIG. @@ROWCOUNT和@@ERROR变 ...