rangeOfString, чтобы обнаружить, является ли "." нажимается дважды - PullRequest
0 голосов
/ 04 марта 2012

Я новичок в программировании и только что начал Objective C. Я создал текстовое поле, в котором я хочу разрешить "." вводиться только один раз! Насколько я понимаю, rangeOfString должен уметь это делать.

-(IBAction)floatingPoint:(UIButton *) sender {

    NSString *floatingPoint = [sender currentTitle];
    NSRange range = [floatingPoint rangeOfString:@"."];

    if (range.location == NSNotFound) {
        self.display.text = 
            [self.display.text stringByAppendingString:floatingPoint];
    }
}

Из того, что я понимаю, код плавающей точки rangeOfString: @ "." будет проверять "." в currentTitle, и если он не найден, следует добавить эту строку с "."

Но этого не происходит, десятичная точка не вводится. Если я введу только
self.display.text = [self.display.text stringByAppendingString:floatingPoint];
, то текстовое поле позволяет вводить более 1 десятичных знаков. Извините, если я описал проблему неправильно, я новичок во всем этом, и это только начало погружаться.

Ответы [ 2 ]

1 голос
/ 04 марта 2012

Вы проверяете заголовок кнопки на .. Вы, вероятно, установили заголовок кнопки на . в своем кончике, поэтому, конечно, он всегда содержит .!

Вместо этого вам нужно проверить текст вашего текстового поля на .. Попробуйте это:

NSRange range = [self.display.text rangeOfString:floatingPoint];
1 голос
/ 04 марта 2012

Альтернативный способ сделать это - добавить UITextField делегат к вашему .h, а затем использовать textField:shouldChangeCharactersInRange:replacementString:, проверить, содержит ли строка ., и вернуть NO, если он есть, и YES, еслиэто не так.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...