zoukankan      html  css  js  c++  java
  • UITextField

    一、UITextField

    1.常见属性

    @property(nonatomic,retain) UIView *leftView; // 设置文本框左边显示什么控件,可以让文本框的内容往右边挪动

    @property(nonatomic)        UITextFieldViewMode leftViewMode; // 设置左边控件的显示模式

    /*

     UITextFieldViewMode的取值

     UITextFieldViewModeNever, 永远不显示

     UITextFieldViewModeWhileEditing, 当文本框正在编辑的时候显示

     UITextFieldViewModeUnlessEditing, 文本框没有编辑的时候显示

     UITextFieldViewModeAlways 永远显示

     */

    // 当文本框发生了一些事情,会通知他的代理

    @property(nonatomic,assign) id<UITextFieldDelegate> delegate;

    2.代理方法UITextFieldDelegate协议中声明的方法

    // 当文本框的return key按钮被点击的时候调用(右下角的按钮被点击)

    - (BOOL)textFieldShouldReturn:(UITextField *)textField;

    二、用宏定义自动生成代码

    1.比如定义下面的宏

    #define kTest(name) \

    + (id)name##WithDict:(NSDictionary *)dict \

    { \

        return [[self alloc] initWithDict:dict]; \

    }

    那么kTest(person)就相当于生成下面的代码

    + (id)personWithDict:(NSDictionary *)dict

    {

        return [[self alloc] initWithDict:dict];

    }

    2.知识点

    1> 如果要分离相连的标识符,使用连接符##

    2> \ 代表后面一行的代码也是属于宏的

    3> 不要在最后一行增加 \

    三、代理设计模式

    1.使用场合:

    1> A对象发生了一些事情,想告诉B对象,就让B对象成为A对象的代理

    2> B对象想监听A对象发生的一些事情,就让B对象成为A对象的代理

    2.步骤

    1> 定义一份代理协议(比如QQGroupHeaderDelegate)(等着代理对象去实现)

    * 协议名都以控件的类名开头,比如QQGroupHeader的代理协议叫做QQGroupHeaderDelegate

    * 协议里面的方法一般都不强制代理去实现,所以方法前面加上@optional

    * 协议里面的方法名都以类名开头(但是不加前缀,比如QQGroupHeader的代理方法都是以groupHeader开头)

    * 协议里面的方法必须能传入控件本身这个参数

    2> 定义一个代理属性

    @property (nonatomic, weak) id<QQGroupHeaderDelegate> delegate;

    3> 设置代理属性(代理用weak

    header.delegate = controller;

    4> 通知代理

    * 先检测代理有没有实现对应的代理方法

    if ([_delegate respondsToSelector:@selector(groupHeaderClick:)]) {

        [_delegate groupHeaderClick:self];

    }

    四、@property的内存管理策略

    weak : UI控件、代理

    strong : weak外的所有OC对象

    assign : 基本数据类型

    copy : NSStringNSMutableString

    如果你错过了一天,那么你就真的错过了一天……ues.hk
  • 相关阅读:
    磁盘分区,fdisk,gdisk,开机自动挂载,swap分区,修复文件系统,备份文件
    进程脱离窗口运行,僵尸、孤儿进程
    top命令、kill命令
    进程状态
    rpm包、挂载、yum命令
    DRF源码分析
    forms组件源码
    Django CBV源码分析
    魔法方法
    鸭子类型
  • 原文地址:https://www.cnblogs.com/myios/p/3670738.html
Copyright © 2011-2022 走看看