项目总结四
2018-06-03 12:01:57 # 项目总结

前言:

最近都一直在忙新项目的事,真是倍感身心疲别啊。目前项目终于成型,也算时间宽松渐缓吧,就把项目中遇到的一些问题做个总结。

1、textField限制输入的位数以及小数点的位数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string;
{
//string就是此时输入的那个字符textField就是此时正在输入的那个输入框返回YES就是可以改变输入框的值NO相反
NSString * toBeString = [textField.text stringByReplacingCharactersInRange:range withString:string];
// 判断是否输入内容,或者用户点击的是键盘的删除按钮
if (![string isEqualToString:@""]) {
if ([textField isEqual:self.textField]) {
// 小数点在字符串中的位置 第一个数字从0位置开始
NSInteger dotLocation = [textField.text rangeOfString:@"."].location;
if (dotLocation == NSNotFound && range.location != 0) {
//没有小数点,最大数值
if (range.location >= 9){
NSLog(@"单笔金额不能超过亿位");
if ([string isEqualToString:@"."] && range.location == 9) {
return YES;
}
return NO;
}
}
//判断输入多个小数点,禁止输入多个小数点
if (dotLocation != NSNotFound){
if ([string isEqualToString:@"."])return NO;
}
//判断小数点后最多两位
if (dotLocation != NSNotFound && range.location > dotLocation + 2) { return NO; }
//判断总长度
if (textField.text.length > 11) {
return NO;
}
}
}
return YES;
}

2、禁用第三方键盘

1
2
3
4
- (BOOL)application:(UIApplication *)application shouldAllowExtensionPointIdentifier:(NSString *)extensionPointIdentifier
{
    return NO;
}

3、延迟执行

取消延迟执行函cancelPreviousPerformRequestsWithTarget

1
2
3
4
5
延迟执行函数
[self performSelector:@selector(scrollDone) withObject:nil afterDelay:0.5];

在0.5秒内取消执行函数,带的参数必须一样,才能取消成功
[NSObject cancelPreviousPerformRequestsWithTarget:self selector:@selector(scrollDone) object:nil];

4、关于浮点数精度问题

大部分开发是不需要关心浮点数精度问题,但在股票等软件开发中,浮点数精度问题会显得很重要,这时就需要用到十进制数字类NSDecimalNumber,这个类继承自NSNumber,苹果针对浮点类型计算精度问题提供出来的计算类,基于十进制的科学计数法来计算,同时可以指定舍入模式,一般用于货币计算。

5、判断是否为单页,是就执行js

1
2
3
4
5
6
7
8
NSString *jsStr=@"if(window.historyBack)historyBack();else window.inject.finish();";
[_webView evaluateJavaScript:jsStr completionHandler:^(id _Nullable response, NSError * _Nullable error) {
if (!error) {
NSLog(@"No error");
}else{
[super leftAction];
}
}];

:先写到这里,其他以后补充。