亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > iOS > 正文

IOS實現郵箱模糊匹配的功能

2020-07-26 03:15:28
字體:
來源:轉載
供稿:網友

先來看看要實現的效果圖

一.介紹一下功能

當輸入一個郵箱的數字,會默認在后面匹配出來@qq.com,當然這個默認@qq.com可以換成其他的如@163.com等等。這里默認是@qq.com,因為我們的產品汪做過統計大多數用戶還是用的qq郵箱,所以默認是@qq.com。

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

二.說一下用法

1.先說一下如果你是在xib中想實現這個功能,首先要拖拽一個textField,設置好約束,然后讓這個textField的類關聯到XLTextField,當前前提你要下載并導入了XLTextField.hXLTextField.m,切記不要忘了將textField.delegate設置給viewController,textField樣式可在xib自行設置,匹配的郵箱區域顏色可自行設置,然后在代碼中只需要調API

/****1.通過xib創建只需要賦值此參數即可*@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還提供了一個可選的mailMatchColor屬性這個屬性是UIColor類型的,是匹配郵箱類型的顏色,可根據需求自行設置。

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

2.通過手動frame創建兩個基本參數設置大小和字號,其他設置可額外自行設置,調用API

/***2.通過手寫創建textField時候調用**@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];

我在示例程序中只針對xib的textField寫了手勢關閉,結束textField的輸入操作,手洞創建textField沒有寫結束第一響應者的操作。如果你在實際使用中,可以根據你的需求例如點擊鍵盤的完成按鈕,或者觸摸屏幕的View等場景下結束textField的鍵盤第一響應者,從而取textField的text進行額外的需求操作。

可根據自己需求定制自己的frame,font大小。不過不支持initnew初始化方法,即使用了也沒關系,會有一個溫馨的報錯提示

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

三.介紹一下實現原理

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

2.textField的代理方法全部封裝在textField.m內部,在內部已經處理了這些代理,更加方便他人調用,不用再花很多心思在調試textField的代理方法上。不論是用xib還是用手動代碼創建,都不需要設置textField.delegate給控制器。

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

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

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

四、總結

以上就是IOS實現郵箱模糊匹配功能的全部功能,實現后是不是很好用呢?感興趣的快快動手實踐起來,希望對大家的學習或者工作能有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲精品国产欧美| 77777亚洲午夜久久多人| 亚洲偷熟乱区亚洲香蕉av| 亚洲精品999| 欧美午夜片欧美片在线观看| 米奇精品一区二区三区在线观看| 欧美精品制服第一页| 亚洲黄色av女优在线观看| 国产欧美一区二区三区在线| 91精品国产91久久久久久不卡| 亚洲夜晚福利在线观看| 红桃av永久久久| 九九精品在线视频| 亚洲国产精品女人久久久| 欧美极品在线播放| 欧美成人高清视频| 国产一区二区欧美日韩| 久久av红桃一区二区小说| 欧美午夜片在线免费观看| 国产成人精品视频在线| 欧美日韩一区二区在线播放| 国语自产精品视频在免费| 日韩在线观看视频免费| 精品久久久久久久中文字幕| 欧美性猛交xxxx免费看漫画| 国产精品www色诱视频| 欧美日韩亚洲视频| 成人444kkkk在线观看| 一区二区三区动漫| 国产日韩欧美黄色| 91免费精品视频| 亚洲美女在线观看| 成人黄色片网站| 国产精品久久久久国产a级| 亚洲一级一级97网| 伊人久久男人天堂| 欧美一区二区影院| 国产国语刺激对白av不卡| 亚洲综合小说区| 91精品久久久久久| 国产精品麻豆va在线播放| 91在线免费观看网站| 97超级碰碰人国产在线观看| 欧美国产亚洲精品久久久8v| 日韩有码在线视频| 青青久久aⅴ北条麻妃| 欧美与欧洲交xxxx免费观看| xxxxx成人.com| 国产精品一区久久| 久久久久国色av免费观看性色| 国产视频观看一区| 91视频国产高清| 日本久久久久久久久久久| 成人激情在线播放| 国产美女精彩久久| 亚洲精品av在线播放| 亚洲欧美精品中文字幕在线| 欧美电影院免费观看| 韩国精品久久久999| 北条麻妃一区二区在线观看| 亚洲欧美中文日韩在线| 美女999久久久精品视频| 国产精品久久久久久久久| 欧美做爰性生交视频| 日本精品一区二区三区在线播放视频| 黑人巨大精品欧美一区二区| 国产精品无码专区在线观看| 成人激情视频在线| 欧美激情精品久久久久久变态| 亚洲精品av在线| 国产精品美乳一区二区免费| 欧美重口另类videos人妖| 91精品久久久久久久久不口人| 久久精品视频99| 国内精品模特av私拍在线观看| 97色在线观看免费视频| 97香蕉久久夜色精品国产| 国产精品久久久久久久久影视| 亚洲japanese制服美女| 日日骚av一区| 国产一区二区三区精品久久久| 欧美激情欧美狂野欧美精品| 日韩精品日韩在线观看| 国产91在线播放精品91| 欧美华人在线视频| 国产精品丝袜视频| 亚洲第一男人av| 国产精品无码专区在线观看| 日韩中文字幕视频在线观看| 久久久99久久精品女同性| 国产成人精品在线播放| 色综合五月天导航| 久久久久久久久久av| 中文字幕亚洲综合久久| 国产精品普通话| 久久精品精品电影网| www.久久久久| 91禁外国网站| 欧美一级黑人aaaaaaa做受| 欧美日韩国产在线| 日本精品一区二区三区在线播放视频| 精品色蜜蜜精品视频在线观看| www国产亚洲精品久久网站| 国产日韩欧美中文| 国产成人在线亚洲欧美| 在线色欧美三级视频| 这里只有精品在线观看| 91超碰中文字幕久久精品| 欧美成人精品在线观看| 国产精品免费看久久久香蕉| 日韩电影中文字幕在线观看| 国产999在线| 欧美韩日一区二区| 国产精品久久久999| 国产欧美日韩高清| 久久久欧美一区二区| 国产精品国产福利国产秒拍| 伦理中文字幕亚洲| 亚洲精品白浆高清久久久久久| 日韩视频中文字幕| 亚洲黄色在线观看| 欧美大片免费观看在线观看网站推荐| 国产综合久久久久久| 欧美激情视频网站| 亚洲色图校园春色| 国产成人+综合亚洲+天堂| 亚洲国产高潮在线观看| 国产精自产拍久久久久久蜜| 91精品国产综合久久香蕉922| 国产裸体写真av一区二区| 欧美一级免费看| 俺也去精品视频在线观看| 欧美激情xxxxx| 中文字幕在线视频日韩| 精品国产乱码久久久久久婷婷| 欧美人与性动交| 5566成人精品视频免费| 91精品国产高清自在线| 日韩乱码在线视频| 黄网站色欧美视频| 中文字幕欧美日韩精品| 亚洲深夜福利网站| 久久久精品电影| 亚洲男人天堂2023| 久久99久久99精品免观看粉嫩| 精品视频www| 日韩在线www| 日韩免费电影在线观看| 国产精品日韩欧美大师| 久久99精品视频一区97| 色噜噜狠狠色综合网图区| 亚洲免费视频一区二区| 国产成人精品久久亚洲高清不卡| 亚洲国产又黄又爽女人高潮的| 国产成人精品视频| 国产精品视频xxx| 亚洲无限av看| 亚洲色图av在线| 亚洲欧美www| 欧美疯狂xxxx大交乱88av| 国产精品99久久久久久久久| 久热爱精品视频线路一| 欧美日韩亚洲一区二| 亚洲国内高清视频|