欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

IOS實(shí)現(xiàn)郵箱模糊匹配的功能

 更新時(shí)間:2016年08月30日 15:36:58   投稿:daisy  
在一些App的訂單填寫頁,輸入用戶郵箱有個(gè)提示郵箱后綴的功能,很好用!還可以根據(jù)各個(gè)郵箱類型用戶量來做一個(gè)優(yōu)先級(jí)的匹配哦。這個(gè)功能該如何實(shí)現(xiàn)呢,下面來一起看看。

先來看看要實(shí)現(xiàn)的效果圖

一.介紹一下功能

當(dāng)輸入一個(gè)郵箱的數(shù)字,會(huì)默認(rèn)在后面匹配出來@qq.com,當(dāng)然這個(gè)默認(rèn)@qq.com可以換成其他的如@163.com等等。這里默認(rèn)是@qq.com,因?yàn)槲覀兊漠a(chǎn)品汪做過統(tǒng)計(jì)大多數(shù)用戶還是用的qq郵箱,所以默認(rèn)是@qq.com。

當(dāng)輸入@符號(hào)還是不會(huì)有所變化,但是如果在@之后再輸入字符,會(huì)將這個(gè)字符和你想要提示的郵箱后綴做匹配,我這里是需要匹配@qq.com,@163.com,@126.com,@yahoo.com,@139.com,@henu.com類型。例如:在@之后你輸入了1,這個(gè)時(shí)候會(huì)在@1之后匹配出來63.com。接著,當(dāng)你在@1之后又輸入了2,會(huì)在@12后面匹配出來6.com。這些匹配的優(yōu)先級(jí)是根據(jù)你給的需要匹配郵箱類型的順序來的,并且這些想要匹配的郵箱類型也是完全可配的,可根據(jù)產(chǎn)品的需求作自己的定制。

二.說一下用法

1.先說一下如果你是在xib中想實(shí)現(xiàn)這個(gè)功能,首先要拖拽一個(gè)textField,設(shè)置好約束,然后讓這個(gè)textField的類關(guān)聯(lián)到XLTextField,當(dāng)前前提你要下載并導(dǎo)入了XLTextField.hXLTextField.m,切記不要忘了將textField.delegate設(shè)置給viewController,textField樣式可在xib自行設(shè)置,匹配的郵箱區(qū)域顏色可自行設(shè)置,然后在代碼中只需要調(diào)API

/**
*
*1.通過xib創(chuàng)建只需要賦值此參數(shù)即可
*@param mailTypeArray郵箱匹配類型
*
*/@property(nonatomic,strong)NSMutableArray*mailTypeArray;

示例代碼:

self.textField.mailTypeArray= [NSMutableArrayarrayWithObjects:@"@qq.com",@"@163.com",@"@126.com",@"@yahoo.com",@"@139.com",@"@henu.com",nil];

XLTextField.h還提供了一個(gè)可選的mailMatchColor屬性這個(gè)屬性是UIColor類型的,是匹配郵箱類型的顏色,可根據(jù)需求自行設(shè)置。

/**
*Optional匹配的郵箱類型后綴默認(rèn)是RGB為170 170 170的顏色,可自行設(shè)置
*/@property(nonatomic,strong)UIColor* mailMatchColor;

2.通過手動(dòng)frame創(chuàng)建兩個(gè)基本參數(shù)設(shè)置大小和字號(hào),其他設(shè)置可額外自行設(shè)置,調(diào)用API

/**
*2.通過手寫創(chuàng)建textField時(shí)候調(diào)用
*
*@param frameframe大小
*@param fontSize textField大小
*
*@return self
*/- (instancetype)initWithFrame:(CGRect)frame fontSize:(CGFloat)fontSize;

示例代碼:

XLTextField * field = [[XLTextField alloc] initWithFrame:CGRectMake(100, 200, 200, 30) fontSize:12];
field.placeholder = @"輸入郵箱地址";
field.mailTypeArray = [NSMutableArray arrayWithObjects:@"@qq.com",@"@163.com",@"@126.com",@"@yahoo.com",@"@139.com",@"@henu.com", nil];
field.mailMatchColor = [UIColor redColor]; 可選屬性
[self.view addSubview:field];

我在示例程序中只針對(duì)xib的textField寫了手勢(shì)關(guān)閉,結(jié)束textField的輸入操作,手洞創(chuàng)建textField沒有寫結(jié)束第一響應(yīng)者的操作。如果你在實(shí)際使用中,可以根據(jù)你的需求例如點(diǎn)擊鍵盤的完成按鈕,或者觸摸屏幕的View等場(chǎng)景下結(jié)束textField的鍵盤第一響應(yīng)者,從而取textField的text進(jìn)行額外的需求操作。

可根據(jù)自己需求定制自己的frame,font大小。不過不支持initnew初始化方法,即使用了也沒關(guān)系,會(huì)有一個(gè)溫馨的報(bào)錯(cuò)提示

- (instancetype)init__attribute__((unavailable("init方法不可用,請(qǐng)用initWithName:fontSzie:")));+ (instancetype)new__attribute__((unavailable("init方法不可用,請(qǐng)用initWithName:fontSzie:")));

三.介紹一下實(shí)現(xiàn)原理

1.可能你不看源碼,就認(rèn)為是一個(gè)textField實(shí)現(xiàn)了全部功能,其實(shí)No.我這里是配合了一個(gè)Label,在xib實(shí)現(xiàn)時(shí)利用aulayout手動(dòng)添加Label。textField只是用來讓用戶輸入,Label用來存儲(chǔ)匹配之后的郵箱(郵箱號(hào)碼+郵箱類型),并且展示。你看到的其實(shí)是Label的text內(nèi)容。當(dāng)最后結(jié)束編輯的時(shí)候,Label會(huì)將內(nèi)容復(fù)制給textField的text,然后清空Label。Label只是在這里提一下實(shí)現(xiàn)方式,真正使用的值還是通過textField.text拿到的值。在這里你可能會(huì)吐槽,為什么不用一個(gè)textField呢,多簡(jiǎn)單省事。但是事實(shí)是我嘗試過一個(gè)textField,中間遇到了一個(gè)坑,好像是textField一個(gè)bug,暫且這樣說 因?yàn)楫?dāng)時(shí)確實(shí)是很奇葩的問題,具體是那么也忘記了,這里也不展開說了,有興趣你可以用一個(gè)textField來嘗試一下哈。

2.textField的代理方法全部封裝在textField.m內(nèi)部,在內(nèi)部已經(jīng)處理了這些代理,更加方便他人調(diào)用,不用再花很多心思在調(diào)試textField的代理方法上。不論是用xib還是用手動(dòng)代碼創(chuàng)建,都不需要設(shè)置textField.delegate給控制器。

3.在textField的shouldChangeCharactersInRange代理方法中針對(duì)你輸入的每一個(gè)字符進(jìn)行郵箱的匹配,下面會(huì)有這一塊的完整代碼。在textFieldDidEndEditing代理方法中將Label的值賦值給textField.text,然后將Label.text清空,直接取textField.text作為我們最終的結(jié)果。

下面貼上匹配郵箱過程的關(guān)鍵代碼,并且每行都有注釋。

/**
*匹配郵箱過程
*
*@param rangerange
*@param string用戶輸入string
*/- (void)configMailMatchingRange:(NSRange)range replacementString:(NSString*)string
{//獲取完整的輸入文本NSString*completeStr = [self.textstringByReplacingCharactersInRange:rangewithString:string];//以@符號(hào)分割文本NSArray*temailArray = [completeStrcomponentsSeparatedByString:@"@"];//獲取郵箱前綴NSString*emailString = [temailArrayfirstObject];//郵箱匹配沒有輸入@符號(hào)時(shí)用@匹配NSString*matchString =@"@";if(temailArray.count>1){//如果已經(jīng)輸入@符號(hào)截取@符號(hào)以后的字符串作為匹配字符串matchString = [completeStrsubstringFromIndex:emailString.length];
}//匹配郵箱得到所有跟當(dāng)前輸入匹配的郵箱后綴NSMutableArray*suffixArray = [selfcheckEmailStr:matchString];//邊界控制如果沒有跟當(dāng)前輸入匹配的后綴置為@""NSString*fixStr = suffixArray.count>0? [suffixArrayfirstObject] :@"";//將lblEmail部分字段隱藏NSIntegercutLenth = suffixArray.count>0? completeStr.length: emailString.length;//最終的郵箱地址self.email= fixStr.length>0? [NSStringstringWithFormat:@"%@%@",emailString,fixStr] : completeStr;//設(shè)置lblEmail的attributeNSMutableAttributedString*attributeString = [[NSMutableAttributedStringalloc]initWithString:[NSStringstringWithFormat:@"%@%@",emailString,fixStr]];

[attributeStringaddAttribute:NSForegroundColorAttributeNamevalue:[UIColorclearColor]range:NSMakeRange(0,cutLenth)];self.mailLabel.attributedText= attributeString;//清空文本框內(nèi)容時(shí)隱藏lblEmailif(completeStr.length==0){self.mailLabel.text=@"";self.email=@"";
}
}

四、總結(jié)

以上就是IOS實(shí)現(xiàn)郵箱模糊匹配功能的全部功能,實(shí)現(xiàn)后是不是很好用呢?感興趣的快快動(dòng)手實(shí)踐起來,希望對(duì)大家的學(xué)習(xí)或者工作能有所幫助。

相關(guān)文章

  • iOS13適配深色模式(Dark Mode)的實(shí)現(xiàn)

    iOS13適配深色模式(Dark Mode)的實(shí)現(xiàn)

    這篇文章主要介紹了iOS13適配深色模式(Dark Mode)的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • IOS 獲取APP 版本號(hào)的實(shí)例詳解

    IOS 獲取APP 版本號(hào)的實(shí)例詳解

    這篇文章主要介紹了IOS 獲取APP 版本號(hào)的實(shí)例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-07-07
  • iOS9提示框的正確使用方式

    iOS9提示框的正確使用方式

    這篇文章主要為大家詳細(xì)介紹了iOS9提示框的正確使用方式,iOS8升級(jí)到iOS9的過程,彈出提示框的方式有了很大的改變,感興趣的小伙伴們可以參考一下
    2016-05-05
  • iOS繪制專屬于程序猿的浪漫愛心

    iOS繪制專屬于程序猿的浪漫愛心

    誰說程序猿不懂浪漫,這篇文章主要介紹了iOS繪制專屬于程序猿的浪漫愛心,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • iOS布局渲染之UIView方法的調(diào)用時(shí)機(jī)詳解

    iOS布局渲染之UIView方法的調(diào)用時(shí)機(jī)詳解

    在你剛開始開發(fā) iOS 應(yīng)用時(shí),最難避免或者是調(diào)試的就是和布局相關(guān)的問題,下面這篇文章主要給大家介紹了關(guān)于iOS布局渲染之UIView方法調(diào)用時(shí)機(jī)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2018-07-07
  • iOS實(shí)現(xiàn)設(shè)備判斷是否安裝相關(guān)地圖(百度、高德等)

    iOS實(shí)現(xiàn)設(shè)備判斷是否安裝相關(guān)地圖(百度、高德等)

    這篇文章主要給大家介紹了關(guān)于iOS如何實(shí)現(xiàn)設(shè)備判斷是否安裝相關(guān)地圖,比如百度、高德等,其實(shí)實(shí)現(xiàn)的方法還是很簡(jiǎn)單,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友下面來一起看看吧。
    2018-01-01
  • iOS使用runtime修改文本框(TextField)的占位文字顏色

    iOS使用runtime修改文本框(TextField)的占位文字顏色

    相信大家都知道TextField默認(rèn)的占位顏色也是深灰色,這個(gè)顏色比較難看清,這篇文章給大家介紹如何使用runtime修改TextField文本框的占位文字顏色,有需要的可以參考借鑒.
    2016-09-09
  • 詳解Swift 利用Opration和OprationQueue來下載網(wǎng)絡(luò)圖片

    詳解Swift 利用Opration和OprationQueue來下載網(wǎng)絡(luò)圖片

    這篇文章主要介紹了詳解Swift 利用Opration和OprationQueue來下載網(wǎng)絡(luò)圖片的相關(guān)資料,希望通過本文能幫助到大家,需要的朋友可以參考下
    2017-09-09
  • iOS 獲取當(dāng)前的ViewController的方法

    iOS 獲取當(dāng)前的ViewController的方法

    本篇文章主要介紹了iOS 獲取當(dāng)前的ViewController的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-09-09
  • iOS錄屏和截屏監(jiān)聽的實(shí)現(xiàn)代碼

    iOS錄屏和截屏監(jiān)聽的實(shí)現(xiàn)代碼

    本篇文章主要介紹了iOS錄屏和截屏監(jiān)聽的實(shí)現(xiàn)代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05

最新評(píng)論