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,所以需要保留它,最后一句代码的作用就是这个。
UITextView (RACSignalSupport)
UIAlertView (RACSignalSupport)
都会用到 其实这里我们也可以通过这样方法实现
[[self.textfield rac_signalForControlEvents:UIControlEventEditingDidEndOnExit] subscribeNext:^(id x) {NSLog(@"%s", __func__);}];