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