gpt4 book ai didi

ios - 如何根据 TextField 的可见大小限制 UITextField 的输入文本量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:31 24 4
gpt4 key购买 nike

我有一个表单应用程序,其中包含许多不同大小的 UITextField。我想在截断字符串之前将输入文本的数量限制为文本字段可以容纳的文本量。堆栈溢出的所有其他答案似乎都知道事先限制字符数量(例如,我想限制为 40 个字符),但我需要知道如何根据文本字段的大小(因文本字段而异)来限制它到文本字段)。

有办法吗?

谢谢

最佳答案

由于字符串的长度取决于字符,在知道字符之前您无法确定最大字符数,因此我建议您在进行时测试每个字符输入是否适合文本字段,例如:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

// Combine the new text with the old
NSString *combinedText = [textField.text stringByReplacingCharactersInRange:range withString:[NSString stringWithFormat:@"%@", string]];

// See if the width of the combined text + the text field's
// left layout margin + the text field's right layout margin
// is greater than or equal to the width of the textField
// (I've multiplied the right margin by 2 to prevent the cursor
// from shifting the field one extra character when the text field
// if full)
CGFloat textWidth = [combinedText sizeWithAttributes:@{NSFontAttributeName: textField.font}].width + textField.layoutMargins.left + textField.layoutMargins.right * 2;
CGFloat textFieldWidth = textField.frame.size.width;

// If the text + margins is as wide or wider than the text field
// don't add the new character, i.e. return NO. Else add the
// character by returning YES.
if (textWidth >= textFieldWidth) {
return NO;
} else {
return YES;
}
}

关于ios - 如何根据 TextField 的可见大小限制 UITextField 的输入文本量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27449895/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com