码迷,mamicode.com
首页 > 其他好文 > 详细

发送红包TextField设置

时间:2015-12-25 20:53:38      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:

#pragma mark - **************** textField代理方法

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

{

    // ------ string指的是当前输入的文本 获取到string 判断输入是否为数字

    NSUInteger lengthOfString = string.length;

    for (NSInteger loopIndex = 0; loopIndex < lengthOfString; loopIndex++) { // for循环遍历输入的string

        unichar character = [string characterAtIndex:loopIndex];

        

        

        if ((character < 48 || character > 57) && character != 46) return NO// 根据unicode编码限制输入内容为数字

    }

    

    // ------ 计算输入之后textField中文本的长度

    NSUInteger wordNumber = textField.text.length - range.length + string.length;

    if (wordNumber > 5) {

        return NO;

    }

    // ------判断当前文本是否存在小数点 并通过布尔值_isHadPoint记录

    if ([textField.text rangeOfString:@"."].location == NSNotFound) {

        _isHadPoint = NO;

    }

    

    // ------当前输入文本时

    if (string.length > 0) {

        // ------判断输入的是否是小数点 如果是小数点 再判断是否已经存在小数点 1.没存在 改变_isHadPoint状态 2.存在小数点 则能再次输入小数点 返回NO

        unichar single = [string characterAtIndex:0];

        if (single == ‘.‘) {

            if (!_isHadPoint) {

                _isHadPoint = YES;

            }else

            {

                return NO// 已经输入小数点了 不能再输入了

            }

        } else { // ------当输入的不是小数点时 再判断当前是否存在小数点 若存在 则限制小数点后只能输入两位

            if (_isHadPoint) {

                NSRange numberRange = [textField.text rangeOfString:@"."];

                int numberBehindPoint = (int)range.location - (int)numberRange.location;

                if (numberBehindPoint > 2) {

                    return NO;            // ------不能超过两位

                }

            }

        }

    }

 

 

    

    // ------当之前的所有判断都通过后 开始将textField内输入过的内容赋值给显示Label 并且限制红包金额为200

    NSString *toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];

    

    NSLog(@"%f",[toBeString doubleValue]);

    

    if ([toBeString floatValue] > 200.0) {

        _moneyNumImportTF.textColor = kRedBoardColor;

        _moneyNumImportRightTF.textColor = kRedBoardColor;

        _moneyNumImportLeftTF.textColor = kRedBoardColor;

        [_sendRedPacketBtn setEnabled:NO];

        

        [UIView animateWithDuration:0.5 animations:^{

            [self bringSubviewToFront:_topWarningLabel];

            _topWarningLabel.left = 0;

            

        }];

        

        

        

    } else {

        // ------当没有输入时 发送Btn不能点击

        if (toBeString.length == 0) {

            [_sendRedPacketBtn setEnabled:NO];

        } else {

            [_sendRedPacketBtn setEnabled:YES];

        }

        _moneyNumImportTF.textColor = kBlackTextColor;

        _moneyNumImportRightTF.textColor = kBlackTextColor;

        _moneyNumImportLeftTF.textColor = kBlackTextColor;

        

        [UIView animateWithDuration:0.5 animations:^{

            _topWarningLabel.right = 0;

        }];

    }

    // ------给展示Label赋值

    _moneyNumShowLabel.text = [NSString stringWithFormat:@"%.2f",[toBeString floatValue]];

    return YES;

    

    

}

 

总结:为textField加限制时 最好只限制return NO

发送红包TextField设置

标签:

原文地址:http://www.cnblogs.com/Ennnnnn7/p/5076842.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!