4

如何限制 UITextField 中的字符数?

即,如果我将其限制为 10 个字符,用户将无法输入超过 10 个字符。另外我想阻止他输入一些特殊字符,例如 +、= 等。

我该怎么做?

4

5 回答 5

10

这是一个限制 UITextField 大小的代码示例:

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
  if ([[textField text] length] + [string length] - range.length > MAX_LENGTH) {
    return NO;
  } else {
    return YES; 
  }
}
于 2011-04-07T21:52:34.120 回答
7

您可以使您的视图控制器符合UITextFieldDelegate protocol并实现textField:shouldChangeCharactersInRange:replacementString:- 每当用户在文本字段中键入新字符或删除现有字符时都会调用它。

然后,您可以检查用户刚刚输入的字符是否有效,返回NO任何无效字符(如您的问题中的 +、=)。

在这篇文中有一个例子。

于 2009-08-02T05:07:42.483 回答
2

这对我有用。

-(BOOL)textFieldShouldReturn:(UITextField *)textField
{   

    if([textField.text length]<=8){
    [tf resignFirstResponder];       
        return YES;
    }
    else
        return NO;
}
于 2011-11-17T07:23:25.303 回答
1

如果你想主动限制用户输入字符,你要做的是为 UITextField 设置一个委托来处理事件,然后查看 textDidChange 通知。然后,您可以在每次更改时查看输入的文本,如果输入了任何不需要的字符(或超出您所需限制的额外字符),您可以将其删除。

请参阅此处了解更多信息: http ://discussions.apple.com/thread.jspa?messageID=6971952

于 2009-08-01T09:26:17.793 回答
0

尝试为您的 UITextField 使用 UIKeyboardTypeNamePhonePad。它只有字母和数字:

textField.keyboardType = UIKeyboardTypeNamePhonePad;
于 2010-11-19T02:02:37.937 回答