如何知道iOS中的UITextField是否有空格

A f*_*pha 29 iphone nsstring uitextfield ipad ios

我有一个UITextField,用户可以在其中输入名称并保存.但是,不应允许用户在textFiled中输入空格.

1 - 如何找出用户是否在textFiled中输入了两个空格或填写空格

2 - 我怎么知道textFiled是否只填充空格

编辑 - 仅输入空格(空格)无效

Dar*_*ust 97

您可以"修剪"文本,即删除开头和结尾处的所有空格.如果剩下的只是一个空字符串,那么只输入空格(或没有).

NSString *rawString = [textField text];
NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSString *trimmed = [rawString stringByTrimmingCharactersInSet:whitespace];
if ([trimmed length] == 0) {
    // Text was empty or only whitespace.
}
Run Code Online (Sandbox Code Playgroud)

如果要检查是否有任何空格(文本中的任何位置),可以这样做:

NSRange range = [rawString rangeOfCharacterFromSet:whitespace];
if (range.location != NSNotFound) {
    // There is whitespace.
}
Run Code Online (Sandbox Code Playgroud)

如果您想要阻止用户输入空格,请参阅@ Hanon的解决方案.

  • @Maudicus:修剪意味着只从开始和结束中删除.中间的任何空格都会被保留. (3认同)

Han*_*non 13

如果你真的想"限制"用户进入空白区域

您可以在UITextFieldDelegate中实现以下方法

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

如果用户在字段中输入空格,则当前文本没有变化


Nar*_*ana 6

使用以下代码行

NSString *str_test = @"Example ";
NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];
if([str_test rangeOfCharacterFromSet:whitespaceSet].location!=NSNotFound)
{
    NSLog(@"Found");
}
Run Code Online (Sandbox Code Playgroud)

如果你想限制用户使用下面的代码

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
    if([string isEqualToString:@" "])
    {
        return NO
    }
    else
    {
        return YES
    }
}
Run Code Online (Sandbox Code Playgroud)