今天我们的用户输入手机号之后变成了用户的名字,没办法获取验证码,因为手机格式不对。下面通过本文给大家分享开发中苹果输入手机号变用户的名字,需要的朋友可以参考下
今天我们的用户输入手机号之后变成了用户的名字,没办法获取验证码,因为手机格式不对。我还是头一次遇到这样的事情。
#pragma mark - UITextFieldDelegate
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == _txtUserName) {
// 12312345678-> 123 1234 5678
if (range.location == 3 || range.location == 8) {
textField.text = [textField.text stringByAppendingString:@" "];
}
// 手机号最多输13位 包含两个空格,防止文本替换
if(range.location >= 13){
return NO;
}
}
return YES;
}
这样就成功的防止文本替换了,因为文本替换不能包含空格。但是我又发现删除不了了,就是当删除到空格的时候就不能继续删除了。难道是数字键盘里不能删除空格???后来我分析代码发现当我删除到空格的时候,就会自动帮我在后面再加上一个空格,这样我就永远把空格删除不了了。所以我要区分只有在输入的时候添加空格,删除到123 1234 5678的5时,自动把5前面的空格去掉。
3.区分输入和删除
当UITextField删除的时候执行- (void)deleteBackward
;方法,这个方法在UIKeyInput协议中。那这就好办了,自定义UITextField的,重写- (void)deleteBackward
;,这个方法一执行,就发通知,或者走代理,都可以。后来我发现这有点麻烦,我还要自定义,发通知/代理,太麻烦了。所以我就想通过监测UITextField的location
来区分输入或删除。
#pragma mark - UITextFieldDelegate
-(BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField == _txtUserName) {
// 删除
if (_lastLocation > range.location) {
if (range.location == 9 || range.location == 4) {
// 删除到空格后一位的时候,自动把空格也去掉
textField.text = [textField.text substringToIndex:range.location];
}
_lastLocation = range.location - 1;
return YES;
}else {
// 输入
if (range.location == 3 || range.location == 8) {
textField.text = [textField.text stringByAppendingString:@" "];
}
}
_lastLocation = range.location;
// 手机号最多输13位 包含两个空格,防止文本替换
if(range.location >= 13){
return NO;
}
}
return YES;
}
其实用户一多,对开发者来说成长会非常快,因为什么情况都会遇到,我们就在解决问题中成长。
以上所述是小编给大家介绍的iOS开发中苹果输入手机号变用户的名字,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对编程学习网网站的支持!
本文标题为:iOS开发中苹果输入手机号变用户的名字


- 详解flutter engine 那些没被释放的东西 2022-12-04
- Android MaterialButton使用实例详解(告别shape、selector) 2023-06-16
- 最好用的ios数据恢复软件:PhoneRescue for Mac 2023-09-14
- iOS 对当前webView进行截屏的方法 2023-03-01
- Android studio实现动态背景页面 2023-05-23
- Android实现轮询的三种方式 2023-02-17
- SurfaceView播放视频发送弹幕并实现滚动歌词 2023-01-02
- Flutter实现底部和顶部导航栏 2022-08-31
- Android实现监听音量的变化 2023-03-30
- 作为iOS开发,这道面试题你能答出来,说明你基础很OK! 2023-09-14