Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone Price ui文本字段:如何允许用户在文本字段中仅输入一个小数点,如283.99_Iphone_Objective C_Uitextfield_Nspredicate - Fatal编程技术网

Iphone Price ui文本字段:如何允许用户在文本字段中仅输入一个小数点,如283.99

Iphone Price ui文本字段:如何允许用户在文本字段中仅输入一个小数点,如283.99,iphone,objective-c,uitextfield,nspredicate,Iphone,Objective C,Uitextfield,Nspredicate,我已经尝试了以下代码 这有助于我允许用户只输入数字和点(小数点) 但是问题是用户可以在这种方法中允许n个小数。 我只允许一个小数点 小数点后只有两位数 比如123.00、123423432353.99 但不像123.4.4、123.12345、123…23 - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)str

我已经尝试了以下代码

这有助于我允许用户只输入数字和点(小数点)

但是问题是用户可以在这种方法中允许n个小数。

我只允许一个小数点

小数点后只有两位数

比如123.00、123423432353.99 但不像123.4.4、123.12345、123…23

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


      if (string.length == 0) {
            return YES;
      }
      NSCharacterSet *myCharSet = [NSCharacterSet characterSetWithCharactersInString:@"0123456789."];
      for (int i = 0; i < [string length]; i++) {
            unichar c = [string characterAtIndex:i];
            if ([myCharSet characterIsMember:c]) {
                  return YES;
            }
      }
      UIAlertView *av = [[UIAlertView alloc] initWithTitle:nil message:@"Invalid input" delegate:self cancelButtonTitle:@"Dismiss" otherButtonTitles:nil];
      [av show];
      return NO;

}
-(BOOL)textField:(UITextField*)textField应更改字符范围:(NSRange)范围替换字符串:(NSString*)字符串{
if(string.length==0){
返回YES;
}
NSCharacterSet*myCharSet=[NSCharacterSet characterSetWithCharactersInString:@“0123456789.”;
对于(int i=0;i<[字符串长度];i++){
unichar c=[string characterAtIndex:i];
if([myCharSet成员:c]){
返回YES;
}
}
UIAlertView*av=[[UIAlertView alloc]initWithTitle:nil消息:@“无效输入”委托:自取消按钮:@“解除”其他按钮:nil];
[视听节目];
返回否;
}
如何允许用户只输入一个小数点?文本字段也只允许在小数点后输入两位数字


提前感谢

请尝试使用此代码…它可能有助于您并请实现您的功能。此代码仅适用于“.”之后的2位数字


请尝试使用此代码…它可能会帮助您并请实现您的功能。此代码仅适用于“.”之后的2位数字

最佳实践在需要执行任何字符串格式验证(如电子邮件、电话号码、货币等)时,请使用常规表达式。

这肯定会解决你的问题。下面是示例代码:

首先创建NSRegularExpression的实例

NSError error;
NSRegularExpression * regExp = [[NSRegularExpression alloc]initWithPattern:@"^\\d{0,10}(([.]\\d{1,2})|([.]))?$" options:NSRegularExpressionCaseInsensitive error:&error];
然后在相关方法中使用:

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

    NSString * existingText = textField.text;
    NSString * completeText = [existingText stringByAppendingFormat:@"%@",string];

    if ([regExp numberOfMatchesInString:completeText options:0 range:NSMakeRange(0, [completeText length])]) 
    {
        if ([completeText isEqualToString:@"."])
        [textField insertText:@"0"];
        return YES;
    }
    else
     return NO;
 }
使用并让我知道它是否有效

最佳实践在需要执行任何字符串格式验证(如电子邮件、电话号码、货币等)时,请使用常规表达式。

这肯定会解决你的问题。下面是示例代码:

首先创建NSRegularExpression的实例

NSError error;
NSRegularExpression * regExp = [[NSRegularExpression alloc]initWithPattern:@"^\\d{0,10}(([.]\\d{1,2})|([.]))?$" options:NSRegularExpressionCaseInsensitive error:&error];
然后在相关方法中使用:

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

    NSString * existingText = textField.text;
    NSString * completeText = [existingText stringByAppendingFormat:@"%@",string];

    if ([regExp numberOfMatchesInString:completeText options:0 range:NSMakeRange(0, [completeText length])]) 
    {
        if ([completeText isEqualToString:@"."])
        [textField insertText:@"0"];
        return YES;
    }
    else
     return NO;
 }

使用并让我知道它是否有效。

在计算完整文本时,您需要考虑范围参数。我想我正在考虑…它的工作很好。在计算完整文本时,需要考虑范围参数。我想我正在考虑……它的工作很好。请不要让你的问题得到回答!不管你是否找到了解决方案,都要跟进。对整个社区都有帮助,对那些寻求答案和解决问题的人都有帮助。请不要让你的问题得到回答!不管你是否找到了解决方案,都要跟进。对整个社区、寻找答案的人和解决问题的人都有帮助。