iOS textField 限制输入

作者: __Jason__ | 来源:发表于2016-03-27 12:09 被阅读1010次

    iOS textField 限制输入

    期望效果是 用户输入的数字只能是小数点后面两位 例: 50.65

    跟微信QQ红包似的,小数点后最多有两位
    并且输入的合法性,有且仅有一个小数点

    屏幕快照 2016-03-26 上午11.35.20.png
    设置 textfield 的代理.
    - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;   {
    
    // 判断这个 textfield 是不是你想要做限制的那个 textField
       if (textField == self.moneyCount)
        {
        NSString *updatedText = [textField.text stringByReplacingCharactersInRange:range withString:string];
        NSArray *stringsArray = [updatedText componentsSeparatedByString:@"."];
        
        if (stringsArray.count > 0)
        {
            
            NSString *dollarAmount = stringsArray[0];
            // 小数点前面最多多少位
            if (dollarAmount.length > 11)
                return NO;
        }
        
        if (stringsArray.count > 1)
        {
            NSString *centAmount = stringsArray[1];
            // 小数点后限制的位数
            if (centAmount.length > 2)
                return NO;
        }
        
        if (stringsArray.count > 2)
            return NO;
        // 限制的总个数,  一共7位: 小数点也在计算中  6666.12   
        if (textField.text.length < 14) {
            NSCharacterSet *cs = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789."] invertedSet];
            NSString *filtered = [[string componentsSeparatedByCharactersInSet:cs] componentsJoinedByString:@""];
            return [string isEqualToString:filtered];
        }
        else
        {
            if (range.length > 0)
            {
                return true;
            }
            else{
                return false;
            }
        }
            }
      return true;
    }

    相关文章

      网友评论

        本文标题:iOS textField 限制输入

        本文链接:https://www.haomeiwen.com/subject/nhtjlttx.html