Reputation: 10764
I have two UITextFields: usernameField & passwordField. For both fields I'm trying to implement the code below to NOT allow the user to type in any white space (use spacebar) and to also limit maximum length for each textfield. The code for white spaces works fine, but Max Length fails.
//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;
}
}
}
Upvotes: 0
Views: 3398
Reputation: 31311
For allowing Maximum characters and rejecting space
Implement shouldChangeCharactersInRange
delegate
- (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;
}
For Minimum characters
Implement textFieldDidEndEditing
delegate
- (void)textFieldDidEndEditing:(UITextField *)textField
{
if ([textField.text length] < 5)
{
//text field length is less than 5.
}
}
Upvotes: 1