我想防止用户不输入任何数据以及只输入空格。所以基本上必须至少有一个字符没有空格。然后我还想删除单词开头的所有空格,以便第一个字母是一个不是空格的字符。
编辑
用户必须输入一些东西,如果用户在它之前输入了几个空格,那么我想修剪这些空格。我还想防止用户只输入空格。
示例
如果用户输入名字和姓氏,如“James Dean”,我想去掉 James 和 Dean 之间的第一个空格,而不是第二个空格。
最佳答案
将您的 UIViewController
设置为您的目标 UITextField
的 delegate
并实现此方法:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
// verify the text field you wanna validate
if (textField == _nameTextField) {
// do not allow the first character to be space | do not allow more than one space
if ([string isEqualToString:@" "]) {
if (!textField.text.length)
return NO;
if ([[textField.text stringByReplacingCharactersInRange:range withString:string] rangeOfString:@" "].length)
return NO;
}
// allow backspace
if ([textField.text stringByReplacingCharactersInRange:range withString:string].length < textField.text.length) {
return YES;
}
// in case you need to limit the max number of characters
if ([textField.text stringByReplacingCharactersInRange:range withString:string].length > 30) {
return NO;
}
// limit the input to only the stuff in this character set, so no emoji or cirylic or any other insane characters
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890 "];
if ([string rangeOfCharacterFromSet:set].location == NSNotFound) {
return NO;
}
}
return YES;
}
关于ios - Objective-c 如何对 textField 进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15403059/