你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> IOS完成郵箱隱約婚配的功效

IOS完成郵箱隱約婚配的功效

編輯:IOS開發綜合

先來看看要完成的後果圖

一.引見一下功效

當輸出一個郵箱的數字,會默許在前面婚配出來@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=@"";
}
}

4、總結

以上就是IOS完成郵箱隱約婚配功效的全體功效,完成後是否是很好用呢?感興致的快快著手理論起來,願望對年夜家的進修或許任務能有所贊助。

【IOS完成郵箱隱約婚配的功效】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved