1.代替 tapGesture
UITapGestureRecognizer *tap = [UITapGestureRecognizer new];
[self.redView addGestureRecognizer:tap];
[tap.rac_gestureSignal subscribeNext:^(id x) {
NSLog(@"点击了view");
}];
2.代替addTarget事件
// 按钮点击事件
[[self.signInButton
rac_signalForControlEvents:UIControlEventTouchUpInside]
subscribeNext:^(id x) {
NSLog(@"button clicked");
}];
// 文本框文字改变
[[self.carPriceTF rac_signalForControlEvents:UIControlEventEditingChanged ] subscribeNext:^(id x) {
UITextField *textField = x;
if (textField.text.length > 4) {
textField.text = [textField.text substringToIndex:4];
}
}];
// cell上按钮点击,防止因为循环利用,造成多次触发
[[[cell.cancelButton rac_signalForControlEvents:UIControlEventTouchUpInside] takeUntil:cell.rac_prepareForReuseSignal] subscribeNext:^(id x) {
//
[self requestToCancelExchangeAwardWithId:prizeModel.ex_id];
}];
return cell;
3 .代替观察者KVO
@weakify(self);
[RACObserve(self, value) subscribeNext:^(NSString* x) {
@strongify(self);
NSLog(@"XXX");
}];
4.监听 通知
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillChangeFrameNotification object:nil]
subscribeNext:^(id x) {
NSLog(@"notificationDemo : %@", x);
}];
5.代替代理
- (void)viewDidAppear:(BOOL)animated {
self.chatContenTF.delegate = self;
//
[[self rac_signalForSelector:@selector(textFieldDidBeginEditing:) fromProtocol:@protocol(UITextFieldDelegate)] subscribeNext:^(RACTuple *tuple) {
}];
//
[[self rac_signalForSelector:@selector(textFieldDidEndEditing:) fromProtocol:@protocol(UITextFieldDelegate)] subscribeNext:^(id x) {
QYLog(@"%@",x);
}];
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。