iOS開發(fā)中蘋果輸入手機(jī)號變用戶的名字
今天我們的用戶輸入手機(jī)號之后變成了用戶的名字,沒辦法獲取驗證碼,因為手機(jī)格式不對。我還是頭一次遇到這樣的事情。

1.文本替換
遇到這種事情肯定去百度啊,發(fā)現(xiàn)還真有人和我遇到相同的情況,原來這個用戶在設(shè)置-》通用-》鍵盤-》文本替換把自己的手機(jī)號設(shè)置自己的名字了,這樣只要在UITextField中輸入自己的手機(jī)號,輸入完就會變成自己的名字,出現(xiàn)上圖的情況。

其實這個功能還是滿好玩的,不過用戶要是把自己的手機(jī)號設(shè)置文本替換了,那么在APP里注冊就會出現(xiàn)問題了。當(dāng)時我就想是不是微信也這樣啊,

看來微信已經(jīng)解決了這個問題,他手機(jī)號中間加了兩個空格,而文本替換是不允許加空格的,所以可以正常完成登錄。這里不得不為微信的工程師們點贊?。〔贿^淘寶更厲害,沒有加空格,也沒有進(jìn)行文本替換,真是厲害啊。我又去看了其他App,基本上都是用空格來防止文本替換的,但是也有一些注冊登錄不了的,有興趣的可以去嘗試。
2.用空格防止文本替換
#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:@" "];
}
// 手機(jī)號最多輸13位 包含兩個空格,防止文本替換
if(range.location >= 13){
return NO;
}
}
return YES;
}
這樣就成功的防止文本替換了,因為文本替換不能包含空格。但是我又發(fā)現(xiàn)刪除不了了,就是當(dāng)刪除到空格的時候就不能繼續(xù)刪除了。難道是數(shù)字鍵盤里不能刪除空格???后來我分析代碼發(fā)現(xiàn)當(dāng)我刪除到空格的時候,就會自動幫我在后面再加上一個空格,這樣我就永遠(yuǎn)把空格刪除不了了。所以我要區(qū)分只有在輸入的時候添加空格,刪除到123 1234 5678的5時,自動把5前面的空格去掉。
3.區(qū)分輸入和刪除
當(dāng)UITextField刪除的時候執(zhí)行- (void)deleteBackward;方法,這個方法在UIKeyInput協(xié)議中。那這就好辦了,自定義UITextField的,重寫- (void)deleteBackward;,這個方法一執(zhí)行,就發(fā)通知,或者走代理,都可以。后來我發(fā)現(xiàn)這有點麻煩,我還要自定義,發(fā)通知/代理,太麻煩了。所以我就想通過監(jiān)測UITextField的location來區(qū)分輸入或刪除。
#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;
// 手機(jī)號最多輸13位 包含兩個空格,防止文本替換
if(range.location >= 13){
return NO;
}
}
return YES;
}
其實用戶一多,對開發(fā)者來說成長會非???,因為什么情況都會遇到,我們就在解決問題中成長。
以上所述是小編給大家介紹的iOS開發(fā)中蘋果輸入手機(jī)號變用戶的名字,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
iOS使用UIBezierPath實現(xiàn)ProgressView
這篇文章主要為大家詳細(xì)介紹了iOS使用UIBezierPath實現(xiàn)ProgressView,具有一定的參考價值,感興趣的小伙伴們可以參考一下2017-04-04
詳解iOS開發(fā)中解析JSON中的boolean類型的數(shù)據(jù)遇到的問題
這篇文章主要介紹了詳解iOS開發(fā)中解析JSON中的boolean類型的數(shù)據(jù)遇到的問題,具有一定的參考價值,有興趣的可以了解一下。2016-12-12
深入理解Objective-C中類的數(shù)據(jù)結(jié)構(gòu)
最近發(fā)現(xiàn)用Objective-C確實好容易,下面這篇文章主要給大家介紹了關(guān)于Objective-C中類的數(shù)據(jù)結(jié)構(gòu)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2018-05-05
iOS通過Runtime實現(xiàn)友盟統(tǒng)計的實例代碼
本篇文章主要介紹了iOS通過Runtime實現(xiàn)友盟統(tǒng)計的實例代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
解決JSON數(shù)據(jù)因為null導(dǎo)致數(shù)據(jù)加載失敗的方法
前段時間發(fā)現(xiàn)一個問題,當(dāng)JSON數(shù)據(jù)中有null會導(dǎo)致數(shù)據(jù)加載失敗,后來解決了,現(xiàn)在將解決方法分享給大家,有同樣問題的朋友們可以參考。下面來一起看看吧。2016-09-09
IOS開發(fā)仿微信消息長按氣泡菜單實現(xiàn)效果
這篇文章主要介紹了IOS開發(fā)仿微信消息長按氣泡菜單實現(xiàn)效果示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07

