iPhone ограничивает пользователя во вводе пространства в текстовом поле

Похож на Вас, взял код от Копия Greasemonkey\JavaScript к кнопке Clipboard или первоисточнику этого отрывка...

Этот код был для Механика, следовательно unsafeWindow. И я предполагаю, что синтаксическая ошибка в IE прибывает из const ключевое слово, которое характерно для Firefox (замените его var).

7
задан g.revolution 20 August 2009 в 06:33
поделиться

4 ответа

Проблема в том, что

string == @" "

неверен. Равенство для строк выполняется с помощью:

[string isEqualToString:@" "]

:).

10
ответ дан 6 December 2019 в 06:37
поделиться

Будет произведен поиск, чтобы увидеть, содержит ли ваша замещающая строка пробел, если он есть, то выдает сообщение об ошибке, если нет, то возвращает YES.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string 
{
    NSRange spaceRange = [string rangeOfString:@" "];
    if (spaceRange.location != NSNotFound)
    {
        UIAlertView *error = [[UIAlertView alloc] initWithTitle:@"Error" message:@"You have entered wrong input" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [error show];
        return NO;
    } else {
        return YES;
    }
}
10
ответ дан 6 December 2019 в 06:37
поделиться
string == @" "

Разве это не просто сравнение адресов каждой из строки и @ "" ? Это не то сравнение, которое вы хотите проводить.

Также вы хотите запретить им вводить строку, которая представляет собой просто пробел? Если да, то вам нужно изменить это == на правильное сравнение строк, и все готово. Если нет и вы хотите запретить использование всех пробелов во входной строке, вам понадобится сопоставитель строк

1
ответ дан 6 December 2019 в 06:37
поделиться

Попробуйте это (установите это в своем - (BOOL) textField: (UITextField *) textField shouldChangeCharactersInRange: (NSRange) range replaceString: (NSString *) string):

NSArray *escapeChars = [NSArray arrayWithObjects:@" ", nil];

NSArray *replaceChars = [NSArray arrayWithObjects:@"",nil];
int len = [escapeChars count];
NSMutableString *temp = [[textField text] mutableCopy];
for(int i = 0; i < len; i++) {
    [temp replaceOccurrencesOfString: [escapeChars objectAtIndex:i] withString:[replaceChars objectAtIndex:i] options:NSLiteralSearch range:NSMakeRange(0, [temp length])];
}
[textField setText:temp];
return TRUE;
2
ответ дан 6 December 2019 в 06:37
поделиться
Другие вопросы по тегам:

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