文档章节

键盘控制数字大小

langzhouzhou1
 langzhouzhou1
发布于 2017/04/14 15:40
字数 206
阅读 13
收藏 0

直接通过UITextField的协议里面的一个方法就能直接实现,封装一个,下回好用。

@protocol NumTextFieldDelegate <NSObject>

@optional
- (void)greateThanMaxNum;       //当大于最大值时触发

@end

@interface SelfTextField : UITextField

@property (nonatomic, assign)float maxNum;      //限制的最大数字 默认99999999999
@property (nonatomic, weak)id<NumTextFieldDelegate> numDelegate;

@end
@implementation SelfTextField

- (instancetype)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        _maxNum = 99999999999;
        self.delegate = self;
        self.keyboardType = UIKeyboardTypeDecimalPad;
    }
    return self;
}

//调用这个方法即可
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
    
    NSString *amountText = textField.text;
    NSString *regStr = @"^([1-9][\\d]{0,100}|0)(\\.[\\d]{0,1})?$";
    NSPredicate *predicate = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regStr];
    BOOL match = [predicate evaluateWithObject:amountText];
    if ([string isEqualToString:@""])
        
    return YES;
    NSString *tmpStr = [amountText stringByAppendingString:string];
    NSString *numStr = [[tmpStr componentsSeparatedByString:@"."] firstObject];
    float amount = [numStr floatValue];
    
    if (([amountText floatValue] == _maxNum) && (![string isEqualToString:@""])){
        return NO;
    }
    BOOL result = [amountText isEqualToString:@""] ? YES : (match && ((amount <= _maxNum) || [string isEqualToString:@"."]));
    
    if (result) {
        NSString * num = [NSString stringWithFormat:@"%@%@",textField.text,string];
        result = [num floatValue] <= _maxNum ?YES:NO;
    }
    
    if (_numDelegate && [_numDelegate respondsToSelector:@selector(greateThanMaxNum)] && !result) {
        [_numDelegate greateThanMaxNum];
    }
    
    return result;
}

-(void)dealloc
{
    self.delegate = nil;
}

© 著作权归作者所有

下一篇: 照片滑动动画
langzhouzhou1
粉丝 4
博文 127
码字总数 62039
作品 0
杭州
私信 提问
USB HID报告及报告描述符简介

USB HID报告及报告描述符简介 在USB中,USB HOST是通过各种描述符来识别设备的,有设备描述符, 配置描述符,接口描述符,端点描述符,字符串描述符,报告描述符等等。 USB报告描述符(Report...

迷糊
2009/12/23
4.4K
1
W3C 发布 EME 标准,EFF 退出 W3C

9月18日,W3C 公布 EME1 标准。同一天,EFF2(电子前哨基金会) 发表公开信 宣布退出 W3C。 公开信中,EFF 表示 W3C 领导不顾众多成员的反对,坚持发布 EME 标准 ,这有可能使数以亿计的网络用...

YoungZ
2017/09/19
0
0
android笔记----软键盘弹出后屏幕适配

清单文件中对需要适配的Activity设置属性:windowSoftInputMode 属性对应值的含义: 值 描述 "stateUnspecified" 软键盘的状态(是否它是隐藏或可见)没有被指定。系统将选择一个合适的状态或依...

kymjs张涛
2014/04/17
850
1
实现输入界面适应键盘的显示和隐藏事件

方法一、设置activity的windowSoftInputMode属性 在AndroidManifest配置activity的windowSoftInputMode为“adjustResize”,一般能解决问题。 其他取值说明: "stateUnspecified" 软键盘的状......

HCMore
2014/01/15
1K
0
Android开发中EditText获得焦点弹出输入框改变屏幕布局

再AndroidManifest.xml 中设置 Activity的属性

lanyu96
2018/12/26
28
0

没有更多内容

加载失败,请刷新页面

加载更多

OSChina 周日乱弹 —— 我,小小编辑,食人族酋长

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @宇辰OSC :分享娃娃的单曲《飘洋过海来看你》: #今日歌曲推荐# 《飘洋过海来看你》- 娃娃 手机党少年们想听歌,请使劲儿戳(这里) @宇辰OSC...

小小编辑
今天
397
11
MongoDB系列-- SpringBoot 中对 MongoDB 的 基本操作

SpringBoot 中对 MongoDB 的 基本操作 Database 库的创建 首先 在MongoDB 操作客户端 Robo 3T 中 创建数据库: 增加用户User: 创建 Collections 集合(类似mysql 中的 表): 后面我们大部分都...

TcWong
今天
3
0
spring cloud

一、从面试题入手 1.1、什么事微服务 1.2、微服务之间如何独立通讯的 1.3、springCloud和Dubbo有哪些区别 1.通信机制:DUbbo基于RPC远程过程调用;微服务cloud基于http restFUL API 1.4、spr...

榴莲黑芝麻糊
今天
2
0
Executor线程池原理与源码解读

线程池为线程生命周期的开销和资源不足问题提供了解决方 案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。 线程实现方式 Thread、Runnable、Callable //实现Runnable接口的...

小强的进阶之路
昨天
6
0
maven 环境隔离

解决问题 即 在 resource 文件夹下面 ,新增对应的资源配置文件夹,对应 开发,测试,生产的不同的配置内容 <resources> <resource> <directory>src/main/resources.${deplo......

之渊
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部