6

ユーザーがデータを入力しないようにし、スペースのみを入力しないようにします。したがって、基本的には、スペースのない文字が少なくとも1つ必要です。次に、単語の先頭にあるスペースをすべて削除して、最初の文字がスペースではない文字になるようにします。

編集

ユーザーは何かを入力する必要があり、ユーザーがその前にいくつかのスペースを入力した場合は、それらのスペースをトリミングします。また、ユーザーがスペースに入るだけではいけないようにしたい。

ユーザーが「JamesDean」のような名前と名前を入力した場合、JamesとDeanの間の2番目のスペースではなく、最初のスペースを削除したいと思います。

4

5 に答える 5

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;
}
于 2013-03-14T07:16:12.247 に答える
5

このようにしてみてくださいそれはあなたに役立つかもしれません、ここに私のコードがあります

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

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

このコードを配置することにより、ユーザーは最初の文字としてスペースを入力しませんが、文字列の中央のスペースを受け入れます。

于 2013-03-14T07:23:04.883 に答える
1

最初の部分のヒントをお伝えします。

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

BOOL thereAreJustSpaces = [tempname1 isEqualToString:@""];
于 2013-03-14T07:14:05.360 に答える
1
-(void)removeSpacesFromTextFields:(id) sender {
    NSString *trim = [self.FNTextField.text stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    if ([trim length] == 0) {
      self.FNTextField.text = @"";
    }
}
于 2017-01-03T11:30:01.023 に答える
0

テキストフィールドにスペースが入らないようにする場合は、これを試してください。

- (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;
}
于 2013-03-14T07:18:35.857 に答える