博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
UITextField
阅读量:5302 次
发布时间:2019-06-14

本文共 1621 字,大约阅读时间需要 5 分钟。

一、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 : NSString、NSMutableString

转载于:https://www.cnblogs.com/myios/p/3670738.html

你可能感兴趣的文章
右侧导航栏(动态添加数据到list)
查看>>
81、iOS本地推送与远程推送详解
查看>>
虚拟DOM
查看>>
自建数据源(RSO2)、及数据源增强
查看>>
关于View控件中的Context选择
查看>>
2018icpc徐州OnlineA Hard to prepare
查看>>
Spark的启动进程详解
查看>>
使用命令创建数据库和表
查看>>
数据库的高级查询
查看>>
机器视觉:SSD Single Shot MultiBox Detector
查看>>
201521123044 《Java程序设计》第1周学习总结
查看>>
MIT Scheme 的基本使用
查看>>
程序员的“机械同感”
查看>>
在16aspx.com上下了一个简单商品房销售系统源码,怎么修改它的默认登录名和密码...
查看>>
c++回调函数
查看>>
linux下Rtree的安装
查看>>
【Java】 剑指offer(53-2) 0到n-1中缺失的数字
查看>>
Delphi中ListView类的用法
查看>>
多米诺骨牌
查看>>
Linq 学习(1) Group & Join--网摘
查看>>