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

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

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

NSNotificationCenter是一种监听机制。

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

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

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

  1. //
  2. // ViewController.m
  3. // CX-login
  4. //
  5. // Created by ma c on 16/1/22.
  6. // Copyright (c) 2016年 xubaoaichiyu. All rights reserved.
  7. //
  8.  
  9. #import "ViewController.h"
  10. #import "CustomerTextField.h"
  11. #import "CustomerButton.h"
  12. @interface ViewController ()
  13. //提供全局变量 TextField
  14. @property (nonatomic, strong) UITextField* textFiledTemp1;
  15. @property (nonatomic, strong) UITextField* textFiledTemp2;
  16. @property (nonatomic, strong) UIButton* btn;
  17. @end
  18.  
  19. @implementation ViewController
  20.  
  21. - (void)viewDidLoad {
  22. [super viewDidLoad];
  23. //view背景颜色
  24. self.view.backgroundColor = [UIColor colorWithRed:/255.0f green:/255.0f blue:/255.0f alpha:];
  25. //设置TextFiled
  26. CustomerTextField* textField1 = [[CustomerTextField alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, ) imageName:@"userName" placeholder:@"请输入手机号"];
  27. [self.view addSubview:textField1];
  28. self.textFiledTemp1 = textField1;
  29. // textField1.keyboardType = UIKeyboardTypeNumberPad;// 键盘type
  30. CustomerTextField* textField2 = [[CustomerTextField alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, ) imageName:@"password" placeholder:@"请输入密码"];
  31. textField2.secureTextEntry = YES;
  32. [self.view addSubview:textField2];
  33. self.textFiledTemp2 = textField2;
  34. //设置登录Button
  35. self.btn = [[CustomerButton alloc]initWithFrame:CGRectMake(, , SCREEN_WIDTH-, ) backgroundImageName:@"beijing" title:@"登录"];
  36. self.btn.enabled = NO;
  37. [self.view addSubview:self.btn];
  38. [self NotificationCenter];
  39.  
  40. }
  41.  
  42. -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
  43. [self.view endEditing:YES];
  44. }
  45. //通知中心 监听Textfield
  46. -(void)NotificationCenter{
  47.  
  48. [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(textDidChangeNotification:) name:UITextFieldTextDidChangeNotification object:nil];
  49.  
  50. }
  51. // 实现按钮状态转变
  52. -(void)textDidChangeNotification:(NSNotification*)notifi{
  53. if ([self.textFiledTemp1.text isEqualToString:@""]||[self.textFiledTemp2.text isEqualToString:@""]) {
  54. self.btn.enabled = NO;
  55. }
  56. else{
  57. self.btn.enabled = YES;
  58. }
  59. }
  60.  
  61. @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. 封装系统自带的Debug

    Unity3d的Debug.Log函数用于打印日志,一般项目中都会对其作如下两件事情: (1)希望有一个总的开关来控制整个游戏中日志的打印与否: (2)有的系统会将Log封一层并添加统一的标记,比如S ...

  2. jqmobile小技巧

    jqmobile API好像是不全,很多查不到.记录下自己的发现: 1.popup:data-position-to能够指向class或者id:data-position-to="#id|| ...

  3. 测试Flask应用_学习笔记

    源代码尽在我的github上面:https://github.com/521xueweihan 欢迎大家交流学习 """ setUp() 方法中会创建一个新的测试客户端并 ...

  4. 资料下载:敏捷个人的成长思考.pptx(第1次线下活动2011.04)

    本文挪至 http://www.zhoujingen.cn/blog/629.html PDF下载地址:http://down.51cto.com/data/207112 推荐:你可能需要的在线电子书 ...

  5. Spring MVC 配置文件dispatcher-servlet.xml 文件详解

    <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.sp ...

  6. 安装 Oracle P6 EPPM 16 R1 database for 12C A

  7. .Net 配置文件--继承ConfigurationSection实现自定义处理类处理自定义配置节点

    除了使用继承IConfigurationSectionHandler的方法定义处理自定义节点的类,还可以通过继承ConfigurationSection类实现同样效果. 首先说下.Net配置文件中一个 ...

  8. HipChat上传文件报未知错误解决方案

    前言 HipChat是Atlassian公司的一款团队协作即时通讯工具,服务端为Linux(官方给的服务端就是一个虚拟机),在Windows.Linux.Android.IOS.Mac等平台都有客户端 ...

  9. SignalR简单示例教程入门版

    上周五最后一天在公司上班,无聊之余就想做点什么.介于之前有人让我做个简易版的在线聊天的,于是乎就打算花一天时间来弄下关于SignalR的简单教程制作一个在线的聊天的. 1:前端用了国产的一个MVVM框 ...

  10. WPF 中获取DataGrid 模板列中控件的对像

    WPF 中获取DataGrid 模板列中控件的对像 #region 当前选定行的TextBox获得焦点 /// <summary> /// 当前选定行的TextBox获得焦点 /// &l ...