• AJ学IOS(07)UI之UITextField代理事件_类似QQ登陆窗口的简单实现


    AJ分享,必须精品

    先看效果图:

    这里写图片描述

    学习代码

    //
    //  NYViewController.m
    //  05-UITextField事件_UIKit复习
    //
    //  Created by apple on 15-3-23.
    //  Copyright (c) 2015年 znycat. All rights reserved.
    //
    
    #import "NYViewController.h"
    
    @interface NYViewController () <UITextFieldDelegate>//遵守协议,类似java中得接口
    @property (weak, nonatomic) IBOutlet UITextField *userNameText;
    @property (weak, nonatomic) IBOutlet UITextField *pwdText;
    
    @end
    
    @implementation NYViewController
    
    /**
    
    前几天主要学习了:
    
     @interface UIImage : NSObject
        @interface UIControl : UIView
        @interface UIImageView : UIView
        @interface UILabel : UIView
            @interface UIButton : UIControl
            @interface UITextField : UIControl
      他们的层次关系很明确了,前面主要就是这几个类:UIView、UIControl、UIImage、UIImageView、UILabel、UIButton、UITextField。
    
     文本框代理方法:UITextField实现代理方法。
    
    代理的用处:
        监听那些不能通过addTarget监听的事件!
        主要用来负责在两个对象之间,发生某些事件时,来传递消息或者数据
    
    代理实现的步骤
        1,成为(子)控件的代理,————父亲(控制器)成为儿子(文本框)的代理
        2,遵守协议:目的是利用智能提示快速编写代码 协议:<UITextFieldDelegate>(类名后面加上(不写也能调用))
        3,实现协议方法
    
     */
    
    
    - (void)viewDidLoad
    {
        [super viewDidLoad];
    
    }
    
    
    /**点击登陆将输入的文字输出到控制台上*/
    -(IBAction)login
    {
    
        NSLog(@"%s%@ %@", __func__, self.userNameText.text, self.pwdText.text);
    
    }
    
    /**文本框代理方法 */
    -(BOOL)textFieldShouldReturn:(UITextField *)textField
    {
        NSLog(@"%@",textField.text);
        //如果光标在账户里面点击return(回车)
        if (textField == self.userNameText) {
            //让密码成为第一响应者
            [self.pwdText becomeFirstResponder];
        } else if(textField == self.pwdText){
            //如果密码输完了,点了回车了直接调用登陆的监听方法
            [self login];
            //让密码文本框关闭键盘
            [self resignFirstResponder];
        }
    
    
        return YES;//返回值为YES表示可以输入,为NO表示不能输入
    }
    
    @end
    

    代理的用处和实现过程

    他们的层次关系很明确了,前面主要就是这几个类:UIView、UIControl、UIImage、UIImageView、UILabel、UIButton、UITextField。

    文本框代理方法:UITextField实现代理方法。

    代理的用处:
    监听那些不能通过addTarget监听的事件!
    主要用来负责在两个对象之间,发生某些事件时,来传递消息或者数据

    代理实现的步骤
    1,成为(子)控件的代理,————父亲(控制器)成为儿子(文本框)的代理
    2,遵守协议:目的是利用智能提示快速编写代码 协议:(类名后面加上(不写也能调用))
    3,实现协议方法
    (其实代理模式有很多,我得理解就是自己的事情请别人来做,这是一个设计模式)

    我得理解是这样的对于UITextField 这个类来说,他里面有个_delegate(英文代理)的属性,通过这个方法可以让他的父类UIControl来做一些动作(内部应该是由他自己做的,毕竟对于面向对象的思想来说,谁的数据谁负责,这里其实是将数据传递给了他爹)

    另外协议可以不写,因为它本身有,这里不写也能运行,如果错误了就直接崩掉了

    当然这些都能用代码写

    UITextField显示暗文_删除小叉号

    UITextField在storyboard中的设置
    UITextField显示:暗文secore勾中
    storyboard中的设置
    这里写图片描述

    UITextField显示删除小叉号:Clear Button中选中
    Appears while editing就可以显示小叉号

  • 相关阅读:
    Linux系统下ping命令报错 name or service not know
    利用Kettle进行SQLServer与Oracle之间的数据迁移实践
    STS中配置MyBatis代码生成器
    GeoServer中配置GeoWebCache切片缓存目录
    Win10下安装msi程序包时报2503、2502错误问题及其解决办法
    常用办公软件推荐
    Excel中使用VBA进行度分秒与十进制度的转换
    ArcGIS下图层范围不正确的两种处理方式
    更改GeoServer的端口号
    Tomcat跨域访问配置
  • 原文地址:https://www.cnblogs.com/luolianxi/p/4990388.html
Copyright © 2020-2023  润新知