как показать одну точку с помощью пользовательской цифровой клавиатуры в iphone?

я создаю пользовательский NumberPad

if (([[[UIDevice currentDevice] systemVersion] doubleValue] >= 4.1)) {
    inputBoxTextField.keyboardType = UIKeyboardTypeDecimalPad;
}

моя проблема в том, что я хочу отображать точку только один раз.

заранее спасибо.


person Thukaram    schedule 10.09.2011    source источник


Ответы (2)


Если вы хотите разрешить пользователю вводить только одну точку, вы можете использовать метод делегата

-(BOOL) textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string

И просто проверьте, содержит ли уже textField точку.

person adamsiton    schedule 11.09.2011

Я использую следующий код. Отлично работает для меня и с меньшим количеством кода.

- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {

    NSNumberFormatter *numberFormatter = [[NSNumberFormatter alloc] init];
    [numberFormatter setNumberStyle:NSNumberFormatterDecimalStyle];
    NSString *decimalSymbol = [numberFormatter decimalSeparator];

    if(([textField.text rangeOfString:decimalSymbol].location != NSNotFound) &&
       ([string rangeOfString:decimalSymbol].location != NSNotFound)) {
        return NO;
    }
return YES; 
}
person audub    schedule 03.12.2012