首页 > 移动平台 > 详细

iOS-UITextField、一些知识点

时间:2014-04-11 23:39:46      阅读:555      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
一、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、NSMutableSt

#pragma mark 当一个对象从xib文件中创建完毕的时候调用一次
- (void)awakeFromNib {}
bubuko.com,布布扣

 

iOS-UITextField、一些知识点,布布扣,bubuko.com

iOS-UITextField、一些知识点

原文:http://www.cnblogs.com/DarbyCJ/p/3658770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!