[ios]UiITextView 文本不后敲键盘上的删除按钮删除文本

发布时间: 2015/7/13 5:51:54
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我有叫 myTextView,称为 charLabel UILabel UITextView。

我使用 UITextView 委托方法以更新计数 (35 和向下) 剩下的 char 的标签。

Bug-im textview 和标签写文本后获取为 0,我不能删除的文本......,在任意数量我可以但只到 0 im 卡住的时候。

这是我的代码:

- (void)textViewDidChange:(UITextView *)textView {

    self.charLabel.text = [NSString stringWithFormat:@"%lu",35 - (unsigned long)textView.text.length];
}

- (BOOL)textView:(UITextView *)textView shouldChangeTextInRange:(NSRange)range replacementText:(NSString *)text1
{

    textView.text = [textView.text stringByReplacingOccurrencesOfString:@"\n" withString:@" "];
    if(textView.text.length >= 35){
        return NO;
    } else {
        return YES;
    }

}

希望能够得到一些帮助,谢谢!

解决方法 1:

在非常简单的方法做到这一点,您可以使用ReactiveCoca ,您可以检查教程。它非常强大的图书馆。

如果你想要在你的情况吧,下面的代码可能会帮助你找出如何做到这一点:

@implementation yourViewController
    - (void)viewDidLoad {
        [super viewDidLoad];
        _textView.delegate = self;
    }
    - (void)textViewDidBeginEditing:(UITextView *)textView {
        [_textView setText:@""];
    }

    - (void)textViewDidChange:(UITextView *)textView {
        [_charLabel setText:[NSString stringWithFormat:@"%d",(int)(35 - textView.text.length)]];
    }

    NSString *holderString = [textView.text stringByReplacingCharactersInRange:range withString:text];

if(holderString.length > 35)
    return NO;
else
    return YES;

确保您连接委派到自我为 textView。

可以是你的榜样你怎么可能在使用反应:

[[self.textView.rac_textSignal
  map:^id(NSString *text) {
      return @(text.length);
  }]
 subscribeNext:^(id x) {

     int xToInt = (int)x/16;

     if (xToInt > 0)  //this provide to keep the count stable when user do "select all and delete".
            [_charLabel setText:[NSString stringWithFormat:@"%d",35 - xToInt]];

     else
         [_counterLabel setText:@"35"];

     if (xToInt > 35)
            [_charLabel setTextColor:[UIColor redColor]];
     else
         [_charLabel setTextColor:[UIColor colorWithRed:179/255.0 green:179/255.0 blue:179/255.0 alpha:1.0]];

 }];
官方微信
官方QQ群
31647020