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

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

  hot3.png

ReactiveCocoa--RACDelegateProxy UITextField textFieldShouldReturn

https://blog.csdn.net/zhang8058/article/details/42427317

 

基本信息

父类 NSObject
子类
类含义 RAC代理类
遵循的协议
属性 RACDelegateProxy *rac_delegateProxy;

参考vincenttsai

这个类平常使用中可能用的不多,比如界面中多个UITextfield,但是各个在代理方法中要做的事情不同,或者说有些需要实现有些不需要。

RACDelegateProxy *delegateProxy = [[RACDelegateProxy alloc]initWithProtocol:@protocol(UITextFieldDelegate)];[[delegateProxy rac_signalForSelector:@selector(textFieldShouldReturn:)] subscribeNext:^(RACTuple *args) {UITextField *field = [args first];[field resignFirstResponder];}];self.textfield.delegate = (id
)delegateProxy;objc_setAssociatedObject(self.textfield, _cmd, delegateProxy, OBJC_ASSOCIATION_RETAIN_NONATOMIC);

上面的代码片段就明确指定self.textfield- (BOOL)textFieldShouldReturn:(UITextField *)textField;会被执行。还需要注意的是,这里delegateProxy可能会无缘无故的被释放掉而crash,所以需要保留它,最后一句代码的作用就是这个。

虽然这个类在实际使用中作用不大,但是在RAC内部像UITextView (RACSignalSupport) UIAlertView (RACSignalSupport)都会用到

其实这里我们也可以通过这样方法实现

[[self.textfield rac_signalForControlEvents:UIControlEventEditingDidEndOnExit] subscribeNext:^(id x) {NSLog(@"%s", __func__);}];

 

转载于:https://my.oschina.net/huqiji/blog/1929061

你可能感兴趣的文章
ASP.NET MVC:WebPageBase.cs
查看>>
Xen虚拟机的创建和启动
查看>>
Design Pattern: Factory Method 模式
查看>>
改善C#程序的建议7:正确停止线程
查看>>
数据库SQL优化大总结之 百万级数据库优化方案(转)
查看>>
瘦了!光荣!都是忙工作忙的!
查看>>
使用嵌入式关系型SQLite数据库存储数据
查看>>
初步学习pg_control文件之十五
查看>>
使用Notepad++开发C#,一个复杂点的csscript脚本
查看>>
jQuery的Internal DSL
查看>>
PL/pgSQL函数带output参数例子
查看>>
【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean...
查看>>
Nginx多站点设置及负载均衡
查看>>
Spring中bean注入前后的一些操作:
查看>>
如何让oracle DB、监听和oem开机启动(dbstart)
查看>>
HDU 2639 Bone Collector II(01背包变形【第K大最优解】)
查看>>
MailMail正式发布!注册码免费发放活动开启!(已结束~~不要再回复咧~)
查看>>
一个分层架构设计的例子(2)
查看>>
时态数据库的应用介绍(2)--时态数据库之TimeDB
查看>>
BZOJ 1207: [HNOI2004]打鼹鼠【妥妥的n^2爆搜,dp】
查看>>