NSControl+RACTextSignalSupport.m 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // NSControl+RACTextSignalSupport.m
  3. // ReactiveCocoa
  4. //
  5. // Created by Justin Spahr-Summers on 2013-03-08.
  6. // Copyright (c) 2013 GitHub, Inc. All rights reserved.
  7. //
  8. #import "NSControl+RACTextSignalSupport.h"
  9. #import <ReactiveCocoa/EXTScope.h>
  10. #import "NSObject+RACDescription.h"
  11. #import "RACDisposable.h"
  12. #import "RACSignal.h"
  13. #import "RACSubscriber.h"
  14. @implementation NSControl (RACTextSignalSupport)
  15. - (RACSignal *)rac_textSignal {
  16. @weakify(self);
  17. return [[[[RACSignal
  18. createSignal:^(id<RACSubscriber> subscriber) {
  19. @strongify(self);
  20. id observer = [NSNotificationCenter.defaultCenter addObserverForName:NSControlTextDidChangeNotification object:self queue:nil usingBlock:^(NSNotification *note) {
  21. [subscriber sendNext:note.object];
  22. }];
  23. return [RACDisposable disposableWithBlock:^{
  24. [NSNotificationCenter.defaultCenter removeObserver:observer];
  25. }];
  26. }]
  27. map:^(NSControl *control) {
  28. return [control.stringValue copy];
  29. }]
  30. startWith:[self.stringValue copy]]
  31. setNameWithFormat:@"%@ -rac_textSignal", RACDescription(self)];
  32. }
  33. @end