Ele*_*gya 63 iphone max uitextfield
有没有办法在UITextField上设置最大长度?
类似于HTML输入字段中的MAXLENGTH属性.
Tom*_*rle 240
这适用于退格和复制和粘贴:
#define MAXLENGTH 10
- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger oldLength = [textField.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;
NSUInteger newLength = oldLength - rangeLength + replacementLength;
BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;
return newLength <= MAXLENGTH || returnKey;
}
Run Code Online (Sandbox Code Playgroud)
更新:更新以接受返回键,即使在MAXLENGTH时也是如此.谢谢罗杰斯先生!
con*_*are 40
UPDATE
我无法删除这个答案,因为它是被接受的答案,但它不正确.这是从下面的TomA复制的正确代码:
#define MAXLENGTH 10
- (BOOL)textField:(UITextField *) textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSUInteger oldLength = [textField.text length];
NSUInteger replacementLength = [string length];
NSUInteger rangeLength = range.length;
NSUInteger newLength = oldLength - rangeLength + replacementLength;
BOOL returnKey = [string rangeOfString: @"\n"].location != NSNotFound;
return newLength <= MAXLENGTH || returnKey;
}
Run Code Online (Sandbox Code Playgroud)
原版的
我认为你的意思是UITextField.如果是,那么有一个简单的方法.
textField:shouldChangeCharactersInRange:replacementString:方法.在每个字符点击或前一个字符替换时调用该方法.在这种方法中,你可以这样做:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if ([textField.text length] > MAXLENGTH) {
textField.text = [textField.text substringToIndex:MAXLENGTH-1];
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
Var*_*rji 16
正确处理退格并将字符限制为提供的长度限制的更好功能如下:
#define MAXLENGTH 8
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
int length = [textField.text length] ;
if (length >= MAXLENGTH && ![string isEqualToString:@""]) {
textField.text = [textField.text substringToIndex:MAXLENGTH];
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
干杯!
小智 11
此代码限制文本,同时还允许您输入字符或粘贴到文本的任何位置.如果生成的文本太长,则会更改范围中的字符,并将生成的文本截断为限制.
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
NSUInteger newLength = [textField.text length] - range.length + [string length];
if (newLength >= MAXLENGTH) {
textField.text = [[textField.text stringByReplacingCharactersInRange:range withString:string] substringToIndex:MAXLENGTH];
return NO;
}
return YES;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
78534 次 |
| 最近记录: |