Objective-c如何在textField上进行验证

use*_*829 6 validation objective-c uitextfield ios

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

编辑

用户必须输入内容,如果用户在它之前输入了几个空格,那么我想修剪这些空格.我还想阻止用户输入空格.

如果用户输入一个名字和姓氏,如"詹姆斯迪恩",我想把第一个空间带走,但不是詹姆斯和迪恩之间的第二个空间.

Eug*_*ene 15

设置你的UIViewController是你的目的地UITextFielddelegate,并实现此方法:

- (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;
}
Run Code Online (Sandbox Code Playgroud)


Bal*_*alu 5

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

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

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

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