限制UITextField大小

时间:2009-08-01 09:21:57

标签: objective-c cocoa-touch uitextfield

如何限制UITextField中的字符数?

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

我该怎么做?

5 个答案:

答案 0 :(得分: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; 
  }
}

答案 1 :(得分:7)

您可以使视图控制器符合UITextFieldDelegate protocol并实现textField:shouldChangeCharactersInRange:replacementString: - 只要用户在文本字段中键入新字符或删除现有字符,就会调用此方法。

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

blog post中有一个例子。

答案 2 :(得分:2)

这适合我。

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

    if([textField.text length]<=8){
    [tf resignFirstResponder];       
        return YES;
    }
    else
        return NO;
}

答案 3 :(得分:1)

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

有关详细信息,请参阅此处: http://discussions.apple.com/thread.jspa?messageID=6971952

答案 4 :(得分:0)

尝试将UIKeyboardTypeNamePhonePad用于您的UITextField。它上面只有字母和数字:

textField.keyboardType = UIKeyboardTypeNamePhonePad;