【发布时间】:2009-08-01 09:21:56
【问题描述】:
如何限制 UITextField 中的字符数?
即如果我将其限制为 10 个字符,则用户将无法输入超过 10 个。另外我想阻止他输入一些特殊字符,如 +、= 等。
我该怎么做?
【问题讨论】:
-
查看answer
标签: objective-c cocoa-touch uitextfield
如何限制 UITextField 中的字符数?
即如果我将其限制为 10 个字符,则用户将无法输入超过 10 个。另外我想阻止他输入一些特殊字符,如 +、= 等。
我该怎么做?
【问题讨论】:
标签: objective-c cocoa-touch uitextfield
这是一个限制 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;
}
}
【讨论】:
您可以使您的视图控制器符合UITextFieldDelegate protocol 并实现textField:shouldChangeCharactersInRange:replacementString: - 每当用户在文本字段中键入新字符或删除现有字符时都会调用它。
然后,您可以检查用户刚刚输入的字符的有效性,返回 NO 以查找任何无效字符(例如您的问题中的 +、=)。
blog post 中有一个例子。
【讨论】:
这对我有用。
-(BOOL)textFieldShouldReturn:(UITextField *)textField
{
if([textField.text length]<=8){
[tf resignFirstResponder];
return YES;
}
else
return NO;
}
【讨论】:
如果你想主动限制用户输入字符,你要做的是为 UITextField 设置一个委托来处理事件,然后查看 textDidChange 通知。然后,您可以在每次更改时查看输入的文本,如果输入了任何不需要的字符(或超出所需限制的额外字符),您可以将其删除。
查看此处了解更多信息: http://discussions.apple.com/thread.jspa?messageID=6971952
【讨论】:
尝试为您的 UITextField 使用 UIKeyboardTypeNamePhonePad。上面只有字母和数字:
textField.keyboardType = UIKeyboardTypeNamePhonePad;
【讨论】: