记一次超级蛋疼的需求

字数 905阅读 1319

今天上班,QA照惯例扯着嗓子对我吼:“Cole,你过来一下“
我忐忑不安的走过去,只期望在这版本上线之前不要出现什么大bug为好
还好情况是这样的,我简单描述一下

支付金额输入框没做校验,首位居然可以输0

接下来,QA开始了机关枪模式:”你这东西让用户怎么用,用户体验在哪里,线上出了bug算你的算我的?balabala……“
我揉了一下太阳穴,无奈道:**”好的,10分钟后给你“ **
后来事实证明我说了一句多么愚蠢的话

第一回合

因为我控制键盘的KeyBoardType 是数字键盘,所以关于小数点或者英文输入我就没太在意(致命错误)



思路太简单了,简直信手拈来,我只要控制第一位不为0不就OK了吗,我是这么写的

  • 首先我给textField addTarget增加监听方法
    [fieldAmount addTarget:self action:@selector(textFieldChanged:) forControlEvents:UIControlEventEditingChanged];

  • 其次,实现其方法
    -(void)textFieldChanged:(UITextField )sender{
    if (sender.text.length == 1 && [sender.text isEqualToString:@"0"]) {
    fieldAmount.text = @"";
    }
    }
    搞定了,在心中默念一声
    ”我太TM牛逼了“ 嚣张跋扈的走到QA面前:”喏,给你,别再BB了“*

QA傻了眼,断然没料想到我能这么快就解决问题,一话不说默默地测了起来
我心中正得意,刚想起身往回走
”你等一下“
”不会吧“ 我心中顿时一沉
”这第三方键盘还是能输入英文字符的啊,你是想让用户输入欧元美元还是咋的“ QA眯着三角眼看我
**”完了,只考虑系统的,第三方的忽略了” **我额头冒出了冷汗,这脑残QA不会又记我一个bug吧“
”好的,我马上改“ 我擦了一下冷汗

第二回合

这次我不敢大意了,还是得夹着尾巴做人
第一个想到的就是正则,限制用户只能输入数字,其实也很简单,凭着我仅存的一点正则知识,我还是迅速的写了出来
- (void)textFieldChanged:(UITextField *)sender{
NSString regex = @"^[1-9][0-9]$";
NSPredicate *prd = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
if (![prd evaluateWithObject:sender.text]) {
fieldAmount.text = @"";
}
}
到这时候,我还是觉得我是有实力的,快速查找问题,解决问题,老子天下第一哈哈哈哈。

”你这还是不对啊,你输入英文或者复制一段数字过来就清空输入框,用户体验严重有问题“ 一盆彻骨的冷水泼了过来
”这QA脑子有病“ 我当时想

痛苦的第三回合

我已经开始有点屈服了,再不解决,在Code界真的是没法混了,经过深思熟虑,最终版诞生了,我当场发下毒誓:”如果还有bug,我直播吃翔“
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
NSString *result = [textField.text stringByReplacingCharactersInRange:range withString:string];
if (result.length == 0) return YES;
NSString regex = @"^[1-9][0-9]$";
NSPredicate *prd = [NSPredicate predicateWithFormat:@"SELF MATCHES %@", regex];
return [prd evaluateWithObject:result];
}
QA疯狂测了半小时,最后确定通过,我流下了感动的流水

经过这件事,我明白了一件事:人生在世莫装逼,惹QA的都傻逼

推荐阅读更多精彩内容