textfield只显示小数点后两位,以及不能出现两个小数点
来源:互联网 发布:医学数据可视化ppt 编辑:程序博客网 时间:2024/06/07 05:31
_textField=[[UITextFieldalloc]initWithFrame:CGRectMake(10,100, 300, 40)];
_textField.placeholder=@"请输入手机号码";
_textField.delegate=self;
[_textFieldaddTarget:selfaction:@selector(textFieldChange:)forControlEvents:UIControlEventEditingChanged];
_textField.leftViewMode=UITextFieldViewModeAlways;
_textField.rightViewMode=UITextFieldViewModeAlways;
_textField.keyboardType=UIKeyboardTypeDecimalPad;
[self.viewaddSubview:_textField];
//只显示小数点后两位,以及不能出现两个小数点
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField ==self.textField) {
if ([textField.textrangeOfString:@"."].location==NSNotFound) {
_isHaveDian =NO;
}
if ([textField.textrangeOfString:@"0"].location==NSNotFound) {
_isFirstZero =NO;
}
if ([stringlength]>0)
{
unichar single=[stringcharacterAtIndex:0];//当前输入的字符
if ((single >='0' && single<='9') || single=='.')//数据格式正确
{
if([textField.textlength]==0){
if(single =='.'){
//首字母不能为小数点
returnNO;
}
if (single =='0') {
_isFirstZero =YES;
returnYES;
}
}
if (single=='.'){
if(!_isHaveDian)//text中还没有小数点
{
_isHaveDian=YES;
returnYES;
}else{
returnNO;
}
}elseif(single=='0'){
if ((_isFirstZero&&_isHaveDian)||(!_isFirstZero&&_isHaveDian)) {
//首位有0有.(0.01)或首位没0有.(10200.00)可输入两位数的0
if([textField.textisEqualToString:@"0.0"]){
returnNO;
}
NSRange ran=[textField.textrangeOfString:@"."];
int tt=(int)(range.location-ran.location);
if (tt <=2){
returnYES;
}else{
returnNO;
}
}elseif (_isFirstZero&&!_isHaveDian){
//首位有0没.不能再输入0
returnNO;
}else{
returnYES;
}
}else{
if (_isHaveDian){
//存在小数点,保留两位小数
NSRange ran=[textField.textrangeOfString:@"."];
int tt= (int)(range.location-ran.location);
if (tt <=2){
returnYES;
}else{
returnNO;
}
}elseif(_isFirstZero&&!_isHaveDian){
//首位有0没点
returnNO;
}else{
returnYES;
}
}
}else{
//输入的数据格式不正确
returnNO;
}
}else{
returnYES;
}
}
returnYES;
}
- textfield只显示小数点后两位,以及不能出现两个小数点
- textfield,首字符不能输入“0”或者“.”,控制小数点后面的分位数以及不让小数点出现两次
- EditText单行、多行和自动换行显示内容以及只输入数字和小数点
- C标签,显示小数点后两位
- Android 限制显示小数点后两位
- iOS中TextField限制小数点
- decimal数据小数点前不能显示的问题
- iOS-lable.text如何显示小数点后两位
- java 显示小数点后几位
- std::showpoint 显示小数点
- iOS 只取float类型值的小数点后两位
- Android金额输入框只允许输入小数点后两位
- c++中如何只保留float型的小数点后两位?
- Java编辑不能输入小数点
- js取小数点后两位 小数点操作方法总结
- js取小数点后两位 小数点操作方法总结
- js取小数点后两位 小数点操作方法总结
- 两个object类型相除,并保留小数点后两位
- HybridDB for MySQL 实现在线与离线数据分离的实践
- 【脚本语言系列】关于Python结构化二进制文件处理HDF5,你需要知道的事
- R语言:如何声明函数
- 三、集合之CopyOnWriteArrayList
- Apache、nginx 、lighttpd性能比较
- textfield只显示小数点后两位,以及不能出现两个小数点
- 水瓶座的人真的很冷血吗
- js中setTimeout和setInterval性能详解总结
- android viewpager使用Fragment懒加载,滑到当前fragment才进行数据加载
- php的curl超时参数
- one_hot的源码实现及其理解
- Linux centos7下常用的命令
- Visual Studio 2013常用快捷键
- 历史诠释新方式,西班牙国家考古博物馆引入虚拟现实技术