Ios 目标-c如何在textField上进行验证

Ios 目标-c如何在textField上进行验证,ios,objective-c,validation,uitextfield,Ios,Objective C,Validation,Uitextfield,我希望防止用户不输入任何数据以及只输入空格。所以基本上必须至少有一个没有空格的字符。然后我还要删除单词开头的空格,这样第一个字母就不是空格了 编辑 用户必须输入一些内容,如果用户在它之前输入了一些空格,那么我想修剪这些空格。我还想防止用户只输入空格 示例 如果用户输入的是像“James Dean”这样的名字和姓氏,我希望去掉第一个空格,而不是James和Dean之间的第二个空格。我将为第一部分提供提示 NSString *tempname1 = [self.textField.text stri

我希望防止用户不输入任何数据以及只输入空格。所以基本上必须至少有一个没有空格的字符。然后我还要删除单词开头的空格,这样第一个字母就不是空格了

编辑


用户必须输入一些内容,如果用户在它之前输入了一些空格,那么我想修剪这些空格。我还想防止用户只输入空格

示例


如果用户输入的是像“James Dean”这样的名字和姓氏,我希望去掉第一个空格,而不是James和Dean之间的第二个空格。

我将为第一部分提供提示

NSString *tempname1 = [self.textField.text stringByReplacingOccurrencesOfString:@" " withString:@""];

BOOL thereAreJustSpaces = [tempname1 isEqualToString:@""];

将您的
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;
}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
//验证要验证的文本字段
如果(textField==\u name textField){
//不允许第一个字符为空格|不允许多个空格
if([string IsequalString:@”“){
如果(!textField.text.length)
返回否;
if([[textField.text stringByReplacingCharactersInRange:range with string:string]rangeOfString:@'].length)
返回否;
}
//允许退格
if([textField.text-stringByReplacingCharactersInRange:range with string:string].length30){
返回否;
}
//将输入限制为仅限于此字符集中的内容,因此没有表情符号、cirylic或任何其他疯狂字符
NSCharacterSet*set=[NSCharacterSet characterSetWithCharactersInString:@“ABCDEFGHIJKLMNOPQRSTUVWXYZACDEFGHIJKLMNOPQRSTUVXYZ1234567890”];
if([string rangeOfCharacterFromSet:set].location==NSNotFound){
返回否;
}
}
返回YES;
}

如果要防止文本字段中出现空格,请尝试此操作

- (void)viewDidLoad
{
 [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(checkSpace:) name:UITextFieldTextDidChangeNotification  object:textfield];

}
 -(void)checkSpace:(NSNotification *)notification
{

  str = [textfield.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] ;
 textfield.text=str;
}

试着这样做可能会对你有所帮助,这是我的代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range 

    replacementString:(NSString *)string{
        if([text.text length]==0){
        if([string isEqualToString:@" "]){
            return NO;
        }
        }
        return YES;
    }

通过放置此代码,用户不会作为第一个字母进入空间,但它接受字符串中间的空间。

有关更多信息,请访问常规表达式您到底想要什么?您想要输入没有第一个字母作为空格的字符串,对吗?用户必须输入一些内容,如果用户在其前面输入一些空格,则我想要修剪这些空格。我还想阻止用户只输入空格。您想在文本字段中输入数据后修剪字符串(或者)您想限制用户不以文本形式输入空格?这显然根本不允许添加任何空格。这与我想做的很接近。但是,如果用户输入的名称和姓氏类似于“James Dean”,我希望去掉第一个空格,但不要去掉James和Dean之间的第二个空格。@user1898829为此,您可以使用[txtUserName.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet];谢谢,我让它工作到了我必须删除单词开头的空格的地步。太棒了!非常感谢:)太好了。。!!Saved my day(Y)警告:characterSetWithCharactersInString示例不包括英语以外语言中使用的字母。例如,如果您有欧洲用户,他们可能会输入上面带有变音符号的字母。在英语地区之外,拒绝这些可能是不可接受的。至少,将此类字母替换为“普通”版本(无标记的字母)。这确实是不可接受的,但比扔掉这封信更令人讨厌。我想这会对你有所帮助
-(void)removeSpacesFromTextFields:(id) sender {
    NSString *trim = [self.FNTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    if ([trim length] == 0) {
      self.FNTextField.text = @"";
    }
}