initial commit
This commit is contained in:
48
Example/Pods/ReactiveObjC/ReactiveObjC/UIControl+RACSignalSupportPrivate.m
generated
Normal file
48
Example/Pods/ReactiveObjC/ReactiveObjC/UIControl+RACSignalSupportPrivate.m
generated
Normal file
@@ -0,0 +1,48 @@
|
||||
//
|
||||
// UIControl+RACSignalSupportPrivate.m
|
||||
// ReactiveObjC
|
||||
//
|
||||
// Created by Uri Baghin on 06/08/2013.
|
||||
// Copyright (c) 2013 GitHub, Inc. All rights reserved.
|
||||
//
|
||||
|
||||
#import "UIControl+RACSignalSupportPrivate.h"
|
||||
#import "NSObject+RACDeallocating.h"
|
||||
#import "NSObject+RACLifting.h"
|
||||
#import "RACChannel.h"
|
||||
#import "RACCompoundDisposable.h"
|
||||
#import "RACDisposable.h"
|
||||
#import "RACSignal+Operations.h"
|
||||
#import "UIControl+RACSignalSupport.h"
|
||||
|
||||
@implementation UIControl (RACSignalSupportPrivate)
|
||||
|
||||
- (RACChannelTerminal *)rac_channelForControlEvents:(UIControlEvents)controlEvents key:(NSString *)key nilValue:(id)nilValue {
|
||||
NSCParameterAssert(key.length > 0);
|
||||
key = [key copy];
|
||||
RACChannel *channel = [[RACChannel alloc] init];
|
||||
|
||||
[self.rac_deallocDisposable addDisposable:[RACDisposable disposableWithBlock:^{
|
||||
[channel.followingTerminal sendCompleted];
|
||||
}]];
|
||||
|
||||
RACSignal *eventSignal = [[[self
|
||||
rac_signalForControlEvents:controlEvents]
|
||||
mapReplace:key]
|
||||
takeUntil:[[channel.followingTerminal
|
||||
ignoreValues]
|
||||
catchTo:RACSignal.empty]];
|
||||
[[self
|
||||
rac_liftSelector:@selector(valueForKey:) withSignals:eventSignal, nil]
|
||||
subscribe:channel.followingTerminal];
|
||||
|
||||
RACSignal *valuesSignal = [channel.followingTerminal
|
||||
map:^(id value) {
|
||||
return value ?: nilValue;
|
||||
}];
|
||||
[self rac_liftSelector:@selector(setValue:forKey:) withSignals:valuesSignal, [RACSignal return:key], nil];
|
||||
|
||||
return channel.leadingTerminal;
|
||||
}
|
||||
|
||||
@end
|
||||
Reference in New Issue
Block a user