UITextField+RACSignalSupport.m 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. //
  2. // UITextField+RACSignalSupport.m
  3. // ReactiveObjC
  4. //
  5. // Created by Josh Abernathy on 4/17/12.
  6. // Copyright (c) 2012 GitHub, Inc. All rights reserved.
  7. //
  8. #import "UITextField+RACSignalSupport.h"
  9. #import <ReactiveObjC/RACEXTKeyPathCoding.h>
  10. #import <ReactiveObjC/RACEXTScope.h>
  11. #import "NSObject+RACDeallocating.h"
  12. #import "NSObject+RACDescription.h"
  13. #import "RACSignal+Operations.h"
  14. #import "UIControl+RACSignalSupport.h"
  15. #import "UIControl+RACSignalSupportPrivate.h"
  16. @implementation UITextField (RACSignalSupport)
  17. - (RACSignal *)rac_textSignal {
  18. @weakify(self);
  19. return [[[[[RACSignal
  20. defer:^{
  21. @strongify(self);
  22. return [RACSignal return:self];
  23. }]
  24. concat:[self rac_signalForControlEvents:UIControlEventAllEditingEvents]]
  25. map:^(UITextField *x) {
  26. return x.text;
  27. }]
  28. takeUntil:self.rac_willDeallocSignal]
  29. setNameWithFormat:@"%@ -rac_textSignal", RACDescription(self)];
  30. }
  31. - (RACChannelTerminal *)rac_newTextChannel {
  32. return [self rac_channelForControlEvents:UIControlEventAllEditingEvents key:@keypath(self.text) nilValue:@""];
  33. }
  34. @end