簡體   English   中英

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

[英]How to know if a UITextField in iOS has blank spaces

我有一個 UITextField,用戶可以在其中輸入名稱並保存。 但是,不應允許用戶在 textFiled 中輸入空格。

1 - 我如何知道用戶是否在 textFiled 中輸入了兩個空格或完整的空格

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

編輯 - 僅輸入空格(空格)無效

您可以“修剪”文本,即刪除開頭和結尾的所有空格。 如果剩下的只是一個空字符串,那么只輸入了空格(或什么都不輸入)。

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

如果你想檢查是否有任何空格(文本中的任何地方),你可以這樣做:

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

如果您想完全阻止用戶輸入空格,請參閱@Hanon 的解決方案。

如果你真的想“限制”用戶輸入空白

您可以在 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;
    }
 }

如果用戶在字段中輸入空格,則當前文本沒有變化

使用以下代碼行

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

如果你想限制用戶使用下面的代碼

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

UPD: Swift 2.0 支持

func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
    let whitespaceSet = NSCharacterSet.whitespaceCharacterSet()
    let range = string.rangeOfCharacterFromSet(whitespaceSet)
    if let _ = range {
        return false
    }
    else {
        return true
    }
}

我有一個相同的條件不允許用戶輸入空白字段

這是我的代碼和檢查語句

- (IBAction)acceptButtonClicked:(UIButton *)sender {
if ([self textFieldBlankorNot:fullNametext]) {
        fullNametext.text=@"na";
    }
// saving value to dictionary and sending to server

}

-(BOOL)textFieldBlankorNot:(UITextField *)textfield{
    NSString *rawString = [textfield text];
    NSCharacterSet *whitespace = [NSCharacterSet whitespaceAndNewlineCharacterSet];
    NSString *trimmed = [rawString stringByTrimmingCharactersInSet:whitespace];
    if ([trimmed length] == 0)
        return YES;
    else
        return NO;
}

這是斯威夫特 3 版本

let whitespaceSet = NSCharacterSet.whitespaces
let range = string.rangeOfCharacter(from: whitespaceSet)
if let _ = range {
    return false
}
else {
    return true
}

@Hanon 的回答非常簡潔,但我需要的是允許至少 1 個空格,所以基於 Hanon 的解決方案,我做了這個:

我聲明了一個名為 whitespaceCount 的局部變量來保持空格的計數。 希望這可以幫助任何人!

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range     replacementString:(NSString *)string 
{ 
    NSCharacterSet *whitespaceSet = [NSCharacterSet whitespaceCharacterSet];

    if ([string rangeOfCharacterFromSet:whitespaceSet].location != NSNotFound) 
    {
        whitespaceCount++;
        if (whitespaceCount > 1) 
        {
            return NO;
        }
    }
    else 
    {
        whitespaceCount = 0;
        return YES;
    }
}

這是我使用stringByReplacingOccurrencesOfString

- (BOOL)validateFields
 {
      NSString *temp = [textField.text stringByReplacingOccurrencesOfString:@" "
                                                          withString:@""
                                                             options:NSLiteralSearch
                                                               range:NSMakeRange(0, textField.text.length)];

      if ([temp length] == 0) {
          // Alert view with message @"Please enter something."
          return NO;
      }
 }

在斯威夫特,

如果要限制用戶,可以使用contains()

例如,

if userTextField.text!.contains(" "){
//your code here.....
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM