UITextField - 仅允许数字和标点输入/键盘

Dev*_*evC 8 numbers ios iphone-keypad

我尝试过下面的代码,但只允许输入键盘上的数字.我的应用程序要求键盘使用句点/句号(用于金钱交易).我试过的代码是:

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

   NSCharacterSet *nonNumberSet = [[NSCharacterSet decimalDigitCharacterSet] invertedSet];

     if ([string rangeOfCharacterFromSet:nonNumberSet].location != NSNotFound)
      {
         return NO;
    }
   return YES;

}
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

Kal*_*esh 43

试试这个

制作一个宏

#define ACCEPTABLE_CHARACTERS @"0123456789."
Run Code Online (Sandbox Code Playgroud)

并使用它

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

    if (textField==textFieldAmount)
    {
        NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:ACCEPTABLE_CHARACTERS] invertedSet];

        NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];

        return [string isEqualToString:filtered];
    }
    return YES;
}
Run Code Online (Sandbox Code Playgroud)