2

我已经动态创建UITextFields了具有不同宽度和字体大小的。我知道如何限制文本的长度UITextField,但我只能用固定的字符数来做到这一点。我需要的是动态限制字符数以适应某些UITextFields. 我想每次输入新字符时,我都应该使用CGSize并获取特定字体大小的文本长度,而不是将其与 UITextField 宽度进行比较,并在超出UITextField宽度时限制字符数。不幸的是,我不确定如何启动它。有谁知道任何可以帮助我的代码片段?

4

1 回答 1

6

您可以从以下代码开始:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *text = textField.text;
    text = [text stringByReplacingCharactersInRange:range withString:string];
    CGSize textSize = [text sizeWithFont:textField.font];

    return (textSize.width < textField.bounds.size.width) ? YES : NO;
}

在 ios 7 之后,它将 sizeWithFont 更改为 sizeWithAttributes。

这是更改的代码:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    NSString *text = textField.text;
    text = [text stringByReplacingCharactersInRange:range withString:string];
    CGSize textSize = [text sizeWithAttributes:@{NSFontAttributeName:textField.font}];

    return (textSize.width < textField.bounds.size.width) ? YES : NO;
}
于 2013-04-25T14:21:27.773 回答