RAC(iOS)常用方法
2019-04-28 本文已影响0人
timeQuick
前言
在学完RAC后发现方法的用法总是会忘,于是简单记录一下在工程中的用法。
RAC常用方法
UIButton点击
button点击响应
[[self.clickBtn rac_signalForControlEvents:UIControlEventTouchUpInside] subscribeNext:^(__kindof UIControl * _Nullable x) {
//点击处理
}];
UITextfield文字改变
监听uitextfield输入文字的改变
// 监听文本框的文字改变
[[self.textfiled rac_textSignal] subscribeNext:^(NSString *x) {
NSLog(@"文本框文字发生了改变:%@",x);
}];
//绑定手机号 这样写可以self.loginView.PhoneTF.text = 复制时也能调用
RAC(self.loginViewModel,phoneNumber ) = [RACSignal merge:@[RACObserve(self.loginView.phoneTF, text),self.loginView.phoneTF.rac_textSignal]];
KVO观察
监听属性
//监听对象的属性值改变,转换成信号,只要值改变就会发送信号
[[self rac_valuesForKeyPath:@"loginValid" observer:nil] subscribeNext:^(id x) {
}];
Notification通知
//键盘弹出
[[[NSNotificationCenter defaultCenter] rac_addObserverForName:UIKeyboardWillShowNotification object:nil] subscribeNext:^(NSNotification * _Nullable x) {
NSLog(@"键盘出来了");
}];
手势GestureRecognizer
// 监听手势
UITapGestureRecognizer *tapGesture = [[UITapGestureRecognizer alloc] init];
[[tapGesture rac_gestureSignal] subscribeNext:^(id x) {
NSLog(@"tap手势点击了");
}];
[self.view addGestureRecognizer:tapGesture];
delegate
自己定义的delegate,可以按如下实现,收到的是一个元组
[[self rac_signalForSelector:@selector(transPhone:psd:)] subscribeNext:^(RACTuple * _Nullable x) {
NSLog(@"data %@",x);
}];
定时器
在不用定时器的时候记得dispose
[[RACSignal interval:1.0 onScheduler:[RACScheduler mainThreadScheduler]] subscribeNext:^(NSDate * _Nullable x) {
NSLog(@"timer %@",x);
}];
[[RACSignal interval:1.5 onScheduler:[RACScheduler schedulerWithPriority:(RACSchedulerPriorityHigh)]] subscribeNext:^(NSDate * _Nullable x) {
NSLog(@"timer 2 %@",x);
}];