中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

iOS開發中如何實現蘋果輸入手機號變用戶的名字

發布時間:2021-08-04 12:26:35 來源:億速云 閱讀:152 作者:小新 欄目:移動開發

這篇文章將為大家詳細講解有關iOS開發中如何實現蘋果輸入手機號變用戶的名字,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

iOS開發中如何實現蘋果輸入手機號變用戶的名字

1.文本替換

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

iOS開發中如何實現蘋果輸入手機號變用戶的名字

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

iOS開發中如何實現蘋果輸入手機號變用戶的名字

看來微信已經解決了這個問題,他手機號中間加了兩個空格,而文本替換是不允許加空格的,所以可以正常完成登錄。這里不得不為微信的工程師們點贊啊!不過淘寶更厲害,沒有加空格,也沒有進行文本替換,真是厲害啊。我又去看了其他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:@" "];
    }
    // 手機號最多輸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開發中如何實現蘋果輸入手機號變用戶的名字”這篇文章就分享到這里了,希望以上內容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ios
AI

清新县| 克拉玛依市| 德化县| 乌什县| 旅游| 黄山市| 汶上县| 白朗县| 曲水县| 京山县| 安丘市| 襄城县| 崇仁县| 长丰县| 石柱| 资中县| 西平县| 沭阳县| 定结县| 雷州市| 静乐县| 临高县| 花莲市| 闽清县| 灵山县| 武安市| 怀宁县| 淳安县| 五莲县| 全州县| 琼海市| 十堰市| 临沭县| 保德县| 石柱| 资中县| 荆州市| 崇义县| 辽宁省| 鄂托克旗| 霍城县|