zoukankan      html  css  js  c++  java
  • iOS-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 : NSString、NSMutableSt
    
    #pragma mark 当一个对象从xib文件中创建完毕的时候调用一次
    - (void)awakeFromNib {}
  • 相关阅读:
    今日总结
    今日总结
    团队绩效1
    本周总结
    团队冲刺阶段10
    团队冲刺阶段9
    团队冲刺阶段8
    promise手写自定义封装异步任务回调的执行
    Vue中this.$options.data()和this.$data知多少?
    手写Promise自定义封装 then 函数
  • 原文地址:https://www.cnblogs.com/DarbyCJ/p/3658770.html
Copyright © 2011-2022 走看看