OC3大回调模式使用总结(二)委托模式回调

OC 3大回调模式使用总结(二)委托模式回调

1.委托模式回调

主要用于 UITableView(UITableViewController),UICollectionView,UIPickerView,UITextField,UITextField

这几类控件,是使用委托模式封装的,使用方法和按钮类的控件不一样

委托模式,实际上也是一种对自身状态的汇报机制,某个状态或者事件的变化是不确定时间发生的,但是发生的时候就就得有某些应对措施,这些应对措施是提前写在协议中的;

与目标动作回调不同的是,委托模式的控件在使用时需要指定委托人和协议,这样状态改变时就可以汇报给委托人来解决,委托人此时不可以自定义委托方法,只能按照协议中的方法去对它的状态改变进行处理,这样使用协议约束之后保障了参数和方法名的统一性,从而减少了安全威胁,而且委托回调的协议方法一般来说有很多个,而目标动作的方法默认是只有一个

2.委托模式与代理的区别:

委托与代理,实际上是从不同侧面去描述一个事件过程  ,我委托一个律师给我打官司,那么对于我来说是委托,对于律师来说是代理,是相对的说法

3.委托模式的缺点:

(1)当你自定义的组件有多个相同类型时,他们的状态改变时会调用同一个方法,不好区分,独立性不好;

(2)过程较为繁琐,需要设置委托,实现协议

4.委托模式的应用:

现在越来越多的控件或者组件使用block来实现,所以默认情况下我们只需要掌握上述的系统几种委托模式的控件的使用即可;自定义控件现在一般采用block封装

5.委托模式控件使用步骤:

(1)分配内存,配置一些选项
(2)设置委托人,具体做法:   xxx.delegate = self;(此过程要在分配内存之后)
(3)遵守协议,把控件对应的协议遵守  ,使用 <UITextFieldDelegate>在 .h中声明
(4)根据代码提示打出委托方法,或者查看协议的官方文档(cmd+单击),找出你需要的方法,实现相应的代码,实现代码后该控件不同的状态你就可以检测到了
(5)添加到父视图

UITextField单行文本框使用示例:

1).创建一个输入框属性

#import "ViewController.h"
@interface ViewController ()
@property(strong,nonatomic)UITextField *txf2;//密码输入框
@end

//2.配置输入框

self.txf2 = [[UITextField alloc]init];
    self.txf2.frame = CGRectMake(50, 100, 200, 30);
    self.txf2.text = @"密码是英文和数字的组合";
    self.txf2.textColor = [UIColor lightGrayColor];
    self.txf2.delegate = self;  //***关键步骤1,设置委托人,需要在分配内存之后
    self.txf2.borderStyle = UITextBorderStyleRoundedRect;
    self.txf2.secureTextEntry = YES;//设置为密码框
    [self.view addSubview:self.txf2];

//3.遵守协议,可以在.h中遵守,也可以在延展中

#import <UIKit/UIKit.h>
@interface ViewController : UIViewController<UITextFieldDelegate> //***第2步,实现协议
@end

//4.根据自己的需求实现UITextFieldDelegate协议里的方法,来处理不同的输入状态

#pragma mark - textFiled的委托方法,当用户输入时自动会调用

/**点击输入框是否应该开始编辑

*/

- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
    //如果reurn NO键盘不会弹出
    textField.text = @"";
    textField.textColor = [UIColor blackColor];
    return YES;//代表可以开始编辑
}

//在文本框编辑完成之后自动调用

- (void)textFieldDidEndEditing:(UITextField *)textField
{
    NSLog(@"文本是  : %@",textField.text);
}
//点击返回时该干什么
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
    //点击完成按钮是否应该返回
    [textField resignFirstResponder];//释放键盘
      return YES;
}

其他OC教程:http://blog.csdn.net/yangbingbinga/article/category/2437601

时间: 2024-10-08 22:56:04

OC3大回调模式使用总结(二)委托模式回调的相关文章

cocos2d-x 委托模式的巧妙运用——附源码(二)

转载请注明出处:http://blog.csdn.net/hust_superman/article/details/38292265,谢谢. 继上一篇将了委托类的具体实现后,这篇来将一下如何在游戏中使用实现的委托类.也就是如何在游戏中来调用委托类来完成一些功能.具体的应用场景和应用层会在下面介绍. 先来看一看游戏demo实现的具体图片,demo比较简单,但是资源齐全,拿到源码后可以在源码的基础上继续完善demo做出一款真正的游戏.好了,老规矩,先上图再说: 游戏中点击播放按钮后会进入游戏主界面

[objective-c] 05 - 委托模式回调

本章主要讲解委托模式以及通过委托模式实现的回调接口. 1.委托模式 委托模式是OC语法独有的开发模式.是基于组件拼装的一种快速开发模式.该模式下,可以保证组件的高度灵活性和通用性.属于组件的一种开放式接口. 下面通过一个现实生活中的场景简单理解下委托模式的应用. 例如我们现在有一个公司.公司想要进行IPO.可是公司老总并不熟悉资本操作,这时候就需要委托一个人或者一个机构来作这件事. 公司首先要提出能做IPO这件事的详细要求,然后通过猎头寻找合适的人选. 用代码描述应该是这样的: 首先用协议描述公

委托模式精讲

委托的作用有两个,一个是传值,一个是传事件. 委托用到的最多的用途 回传值(回调) 当我们声明了遵循的协议的属性时,属性的关键字要用weak或者assign,目的是为了避免循环引用 委托模式,它的特点是,一对一 用途是用在有上下级关系的两个view,不能跨级调用 例如:ReadViewController这个类里面是一个阅读小说的界面,现在有个需求:想改变小说的背景颜色和字体颜色,而它本身有不想做这件事,这是它就会找个代理SetViewController,帮他完成这一转变. #import "

[js高手之路]设计模式系列课程-委托模式实战微博发布功能

在实际开发中,经常需要为Dom元素绑定事件,如果页面上有4个li元素,点击对应的li,弹出对应的li内容,怎么做呢?是不是很简单? 大多数人的做法都是:获取元素,绑定事件 1 <ul> 2 <li>跟着ghostwu学习javascript设计模式的应用1</li> 3 <li>跟着ghostwu学习javascript设计模式的应用2</li> 4 <li>跟着ghostwu学习javascript设计模式的应用3</li&g

android深入之设计模式(一)委托模式

(一)委托模式简介 委托模式是基本的设计模式之一.委托,即是让另一个对象帮你做事情. 许多其他的模式,如状态模式.策略模式.访问者模式本质上是在更特殊的场合采用了委托模式. 委托模式使得我们可以用聚合来替代继承,java-组合优于继承. 最简单的java委托模式 class RealPrinter { void print() { System.out.println("real printer"); } } class Printer { RealPrinter realPrinte

《Inside C#》笔记(十二) 委托与事件

C#的委托与C++的函数指针类似,但委托是类型安全的,意味着指针始终会指向有效的函数.委托的使用主要有两种:回调和事件. 一 将委托作为回调函数 在需要给一个函数传递一个函数指针,随后通过函数指针调用函数时,就可以使用回调函数的方式.回调函数经常用于异步编程,如果被调用的方法执行起来比较费时,就可以把这个方法放在单独在线程执行,同时将函数指针交给回调函数,线程结束时再调用回调函数.这样调用者就不必因等待执行起来费时的方法而被阻塞了. a) 举例,有一个数据库管理类DBManager,这个类追踪所

浅析WPF中MVVM模式下命令与委托的关系

??各位朋友大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com.最近因为项目上的原因开始接触WPF,或许这样一个在现在来讲显得过时的东西,我猜大家不会有兴趣去了解,可是你不会明白对某些保守的项目来讲,安全性比先进性更为重要,所以当你发现银行这类机构还在使用各种"复古"的软件系统的时候,你应该相信这类东西的确有它们存在的意义.与此同时,你会更加深刻地明白一个道理:技术是否先进性和其流行程度本身并无直接联系.由此我们可以推论出:一项不流行

蓝懿IOS委托模式代理模式

今天刘国斌老师讲了有关oc语言里的委托模式(代理模式),通过了一个打地鼠的游戏讲解了委托模式的功能作用,之后连带讲解了协议的书写和使用. 打地鼠功能包括屏幕随机出现地鼠,点击消失,如果不点击5秒后自动消失,屏幕右上角有一个label显示点击的数量:编写思维是,首先在文件里粗昂见一个类,在类里重写init方法,加上每.5秒出现的事件,倒入viewcontroler文件,在地鼠类里声明一个属性delegate,在button点击事件加上创建对象点delegate调用viewcontroler里的加分

从java 反射看延迟加载(代理模式)(二)

代理模式 代理模式使用代理对象完成用户请求,屏蔽用户对真实对象的访问.现实世界的代理人被授权执行当事人的一些事宜,无需当事人出面,从第三方的角度看,似乎当事人并不存在,因为他只和代理人通信.而事实上代理人是要有当事人的授权,并且在核心问题上还需要请示当事人. 在软件设计中,使用代理模式的意图也很多,比如因为安全原因需要屏蔽客户端直接访问真实对象,或者在远程调用中需要使用代理类处理远程方法调用的技术细节 (如 RMI),也可能为了提升系统性能,对真实对象进行封装,从而达到延迟加载的目的. 代理模式