rac_textSignal自帶鍵盤輸入中文的問題

需求:

限制輸入字符50個及以內(nèi)

問題:

rac_textSignal在預(yù)輸入拼音的時候會響應(yīng),導(dǎo)致限制出錯

解決方案:

過濾預(yù)輸入狀態(tài)。(感謝ShowMeCode的這篇文章)

#import "UITextField+Add.h"
#import "NSObject+RACDescription.h"

@implementation UITextField (Add)

- (RACSignal *)rac_inputTextSignal {
    @weakify(self);
    return [[[[[[RACSignal
                defer:^{
                    @strongify(self);
                    return [RACSignal return:self];
                }]
               concat:[self rac_signalForControlEvents:UIControlEventAllEditingEvents]]
              filter:^BOOL(UITextField *x) {
                  if (!x.markedTextRange) {
                      return YES;
                  } else {
                      return NO;
                  }
              }]
              map:^(UITextField *x) {
                  return x.text;
              }]
             takeUntil:self.rac_willDeallocSignal]
            setNameWithFormat:@"%@ -rac_inputTextSignal", RACDescription(self)];
}

@end

#import "UITextView+Add.h"
#import "NSObject+RACDescription.h"


@implementation UITextView (Add)

static void RACUseDelegateProxy_(UITextView *self) {
    if (self.delegate == (id)self.rac_delegateProxy) return;
    
    self.rac_delegateProxy.rac_proxiedDelegate = self.delegate;
    self.delegate = (id)self.rac_delegateProxy;
}

- (RACSignal *)rac_inputTextSignal {
    @weakify(self);
    RACSignal *signal = [[[[[[[RACSignal
                             defer:^{
                                 @strongify(self);
                                 return [RACSignal return:RACTuplePack(self)];
                             }]
                            concat:[self.rac_delegateProxy signalForSelector:@selector(textViewDidChange:)]]
                            reduceEach:^(UITextView *x) {
                                return x;
                            }]
                           filter:^BOOL(UITextView *x) {
                               if (!x.markedTextRange) {
                                   return YES;
                               } else {
                                   return NO;
                               }
                           }]
                           map:^(UITextView *x) {
                               return x.text;
                           }]
                          takeUntil:self.rac_willDeallocSignal]
                         setNameWithFormat:@"%@ -rac_inputTextSignal", RACDescription(self)];
    
    RACUseDelegateProxy_(self);
    
    return signal;
}

@end

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容