RAC-delagete的使用

来源:互联网 发布:淘宝人群标签形成过程 编辑:程序博客网 时间:2024/05/17 23:14
 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<UITextFieldDelegate>)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__);}];

0 0
原创粉丝点击