如何在IOS中动态计算文本字段中的字符数

时间:2014-06-13 01:15:56

标签: ios objective-c cocoa-touch

我希望能够随时计算200 - 字符数。 这意味着我想显示字符数,并在用户输入或删除字符时随时更新。

我的代码正确计算200 - 任何时候的字符数,但我不知道如何不断更新文本字段。

-(void)updateLabel{
// Get the text from the message
// find the length of the text
// subtract from the converted number in the charCounter Label
// display in the charCounter Label

 int length = _message.text.length;
 int charLeft = 200 - length;
 NSString* charCountStr = [NSString stringWithFormat:@"%i", charLeft];
 _charCounter.text = charCountStr;

}

然后我在viewDidLoad中调用updateLabel函数。

我怀疑必须有一些其他功能来持久更新viewController

2 个答案:

答案 0 :(得分:4)

只需实现UITextFieldDelegate方法textField:shouldChangeCharactersInRange:replacementString:并从中调用updateLabel方法。

From the docs:

  

只要用户在文本字段中键入新字符或删除现有字符,文本字段就会调用此方法。

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    [self updateLabel];

    return YES;
}

不要忘记设置文本字段的委托属性,并确保您的类符合UITextFieldDelegate。

答案 1 :(得分:0)

您似乎想要一个类似Twitter的动态计数,即用户可以在UITextBox中键入的字符数量。因此,您有200个字符的限制,并且您想要通知用户他或她动态输入了多少字符。

如果您希望每次文本更改时都运行该方法:

// textField is the UITextField you type your text in to.
// this could be a reference to that field via an IBOutlet or you created it manually
[textField addTarget:self 
              action:@selector(updateLabel) 
    forControlEvents:UIControlEventEditingChanged];