Как узнать, есть ли в UITextField в iOS пустые места

Когда файл записывается в двоичном формате (байт by byte), создайте FileStream и выше решения Не работает, потому что файл готов и wrotted в каждом байте, поэтому в этой ситуации вам нужно другое обходное решение, подобное этому: сделайте это при создании файла или вы хотите начать обработку в файле

long fileSize = 0;
currentFile = new FileInfo(path);

while (fileSize < currentFile.Length)//check size is stable or increased
{
  fileSize = currentFile.Length;//get current size
  System.Threading.Thread.Sleep(500);//wait a moment for processing copy
  currentFile.Refresh();//refresh length value
}

//Now file is ready for any process!
29
задан A for Alpha 23 November 2011 в 08:05
поделиться

8 ответов

Вы можете «обрезать» текст, то есть удалить все пробелы в начале и конце. Если все, что осталось, это пустая строка, то вводится только пробел (или ничего).

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.

97
ответ дан itsaboutcode 23 November 2011 в 08:05
поделиться

Используйте следующие строки кода

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
    }
}
6
ответ дан P.J.Radadiya 23 November 2011 в 08:05
поделиться

если вы действительно хотите «запретить» пользователю вводить пробелы

, вы можете реализовать следующий метод в 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;
    }
 }

Если пользователь вводит пробел в поле, нет изменить в текущем тексте

13
ответ дан Hanon 23 November 2011 в 08:05
поделиться

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
    }
}
3
ответ дан Yevhen Dubinin 23 November 2011 в 08:05
поделиться

Heres Swift 3 версия

let whitespaceSet = NSCharacterSet.whitespaces
let range = string.rangeOfCharacter(from: whitespaceSet)
if let _ = range {
    return false
}
else {
    return true
}
1
ответ дан Pankaj Gaikar 23 November 2011 в 08:05
поделиться

У меня было то же условие, не позволяющее пользователю вводить пустое поле

Вот мой код и оператор проверки

- (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;
}
1
ответ дан DreamWatcher 23 November 2011 в 08:05
поделиться

Вот что я сделал, используя 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;
      }
 }
0
ответ дан Arnlee Vizcayno 23 November 2011 в 08:05
поделиться

@ Ханон отвечает довольно аккуратно, но мне нужно было разрешить хотя бы 1 пробел, поэтому на основе решения Ханона я сделал следующее:

Я объявил локальную переменную 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;
    }
}
0
ответ дан P.J.Radadiya 23 November 2011 в 08:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: