2013-03-13 66 views
0

我有两个UITextFields:usernameField & passwordField。对于这两个字段,我试图实现下面的代码,不允许用户输入任何空格(使用空格键),也限制每个文本字段的最大长度。白色空间的代码工作正常,但最大长度失败。UITextField无最大字符数限制的空格

//Addressing White space and length in the form 
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string { 

NSString *resultingString = [textField.text stringByReplacingCharactersInRange: range withString: string]; 
NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet]; 
if ([resultingString rangeOfCharacterFromSet:whitespaceSet].location == NSNotFound)  { 
    return YES; 
} else { 
    self.title.text = @"No Spaces Allowed"; 
    self.title.textColor = [UIColor yellowColor]; 
    return NO; 
} 


if (textField == self.usernameField) 
{ 
    NSInteger MAXLENGTH = 15; 

    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; 

if (textField == self.passwordField) 
    { 
     NSInteger MAXLENGTH = 10; 

     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; 
    } 
} 
} 

回答

1

为了允许最多字符和拒绝空间

实施shouldChangeCharactersInRange代表

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{ 
    BOOL _isAllowed = YES; 

    NSString *tempString = [[textField.text stringByReplacingCharactersInRange:range withString:string] stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 


    if ([self.yourTextFeildName.text isEqualToString:tempString] || [tempString length] > 5) 
    { 
     _isAllowed = NO; 
    } 

    return _isAllowed; 
} 

对于最小字符

实施textFieldDidEndEditing代表

- (void)textFieldDidEndEditing:(UITextField *)textField 
{ 
    if ([textField.text length] < 5) 
    { 
     //text field length is less than 5. 
    } 
}