iOS郵箱登錄后綴下拉提示的實現(xiàn)(附源碼)

前言

之前要做一個類似微博那樣輸入郵箱登錄時出現(xiàn)相關(guān)聯(lián)的郵箱后綴提示恍飘,就是下面這種效果榨崩。

textFieldResult.gif

沒找到很好用的第三方庫,只能自己寫一個章母,花費了不少時間汽畴,現(xiàn)在貢獻出來嗡官,希望能夠幫到大家官还。

具體實現(xiàn)

首先察滑,實現(xiàn)郵箱下拉提示這個效果思路還是比較簡單明確的,就是一個監(jiān)聽textField的狀態(tài)蚪缀,每當用戶輸入或刪除文字時做出判斷秫逝,如果里面含有“@”,就顯示一個tableView询枚,并用NSPredicate過濾顯示相關(guān)后綴违帆,但具體實現(xiàn)封裝時還是費了一番功夫。
首先自定義一個UITextField的子類金蜀,將下拉提示的tableView作為它的一個屬性刷后,并且用這個TextField作為tableView的代理對象

.h文件
@interface AZXEmailTextField : UITextField
.m文件
@interface AZXEmailTextField ()<UITableViewDataSource, UITableViewDelegate>
// 郵箱下拉提示列表
@property (strong, nonatomic) UITableView *promptTableView;

先把最重要的初始化方法寫好,這里因為考慮到大家要面臨不同的情況渊抄,所以我讓開發(fā)者自己決定要把這個TextField加到那個View里面作為其超類尝胆,當然frame這個參數(shù)也是在那個View中的frame,至于setUpInView這個方法有點長我就不在這里貼出來了护桦,大家對具體實現(xiàn)感興趣的可以把源碼下載下來看一下

- (instancetype)initWithFrame:(CGRect)frame InView:(UIView *)view {
    if (self = [super initWithFrame:frame]) {
        return [self setUpInView:view];
    }
    return nil;
}

然后就是要監(jiān)聽用戶的改變textField文字的動作了含衔,這里有兩種方法,可以用UITextField的代理方法二庵,但是為了能把這個類盡量封裝的簡單點贪染,我使用的是另一種方法,直接監(jiān)聽其狀態(tài)的改變(注意催享,這里的self就是我自定義的那個AZXEmailTextField)

[self addTarget:self action:@selector(textFieldDidChanged) forControlEvents:UIControlEventEditingChanged];

下面就是實現(xiàn)提示相關(guān)后綴的功能了抑进,首先判斷,只要用戶已輸入“@”字符睡陪,就將下拉列表顯示出來(默認是hidden的),然后使用NSArray的filteredArrayUsingPredicate方法,過濾出匹配用戶輸入郵箱的提示

- (void)textFieldDidChanged {
    if ([self.text containsString:@"@"]) {
        self.promptTableView.hidden = NO;
        // @后面的subString
        NSString *latterStr = [self.text substringFromIndex:[self.text rangeOfString:@"@"].location+1];
        if ([latterStr isEqualToString:@""]) {
            self.matchedSuffixArray = self.emailSuffixArray;
        } else {
            self.matchedSuffixArray = [self.emailSuffixArray filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"self beginswith %@", [self deleteSpacesInString:latterStr]]];
            if (self.matchedSuffixArray.count == 0) {
                self.promptTableView.hidden = YES;
            }
        }
        
        [self.promptTableView reloadData];
    } else {
        self.promptTableView.hidden = YES;
    }
}

再然后兰迫,就是顯示下拉郵箱列表的具體樣式了信殊,考慮到大家具體的需求可能都不一樣,我留下許多API供大家高度的自定義下拉樣式汁果,比如下拉列表的高度涡拘,郵箱后綴的內(nèi)容,文字離列表左邊的距離据德,文字的字體大小顏色鳄乏,分割線的左右距離等等。如果想要上圖中的默認樣式效果棘利,那只要簡單的一句代碼就搞定了橱野,然后把它加到你想加的View里,剩余的都不用你操心善玫!

AZXEmailTextField *textField = [[AZXEmailTextField alloc] initWithFrame:frame InView:self.view];

源代碼在https://github.com/XinStar1/AZXEmailTextField
下載下來之后直接把“郵箱下拉提示”那個文件夾拖到項目里就可以了水援,這個demo是我認真花費了精力去寫的,希望可以幫到大家茅郎。如果覺得好用的話蜗元,可以給我一個star,當做對我的鼓勵系冗!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末奕扣,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子掌敬,更是在濱河造成了極大的恐慌惯豆,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,430評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涝开,死亡現(xiàn)場離奇詭異循帐,居然都是意外死亡,警方通過查閱死者的電腦和手機舀武,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,406評論 3 398
  • 文/潘曉璐 我一進店門拄养,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人银舱,你說我怎么就攤上這事瘪匿。” “怎么了寻馏?”我有些...
    開封第一講書人閱讀 167,834評論 0 360
  • 文/不壞的土叔 我叫張陵棋弥,是天一觀的道長。 經(jīng)常有香客問我诚欠,道長顽染,這世上最難降的妖魔是什么漾岳? 我笑而不...
    開封第一講書人閱讀 59,543評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮粉寞,結(jié)果婚禮上尼荆,老公的妹妹穿的比我還像新娘。我一直安慰自己唧垦,他們只是感情好捅儒,可當我...
    茶點故事閱讀 68,547評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著振亮,像睡著了一般巧还。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上坊秸,一...
    開封第一講書人閱讀 52,196評論 1 308
  • 那天麸祷,我揣著相機與錄音,去河邊找鬼妇斤。 笑死摇锋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的站超。 我是一名探鬼主播荸恕,決...
    沈念sama閱讀 40,776評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼死相!你這毒婦竟也來了融求?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,671評論 0 276
  • 序言:老撾萬榮一對情侶失蹤算撮,失蹤者是張志新(化名)和其女友劉穎生宛,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肮柜,經(jīng)...
    沈念sama閱讀 46,221評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡陷舅,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,303評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了审洞。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片莱睁。...
    茶點故事閱讀 40,444評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖芒澜,靈堂內(nèi)的尸體忽然破棺而出仰剿,到底是詐尸還是另有隱情,我是刑警寧澤痴晦,帶...
    沈念sama閱讀 36,134評論 5 350
  • 正文 年R本政府宣布南吮,位于F島的核電站,受9級特大地震影響誊酌,放射性物質(zhì)發(fā)生泄漏部凑。R本人自食惡果不足惜露乏,卻給世界環(huán)境...
    茶點故事閱讀 41,810評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望砚尽。 院中可真熱鬧施无,春花似錦、人聲如沸必孤。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,285評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽敷搪。三九已至,卻和暖如春幢哨,著一層夾襖步出監(jiān)牢的瞬間赡勘,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,399評論 1 272
  • 我被黑心中介騙來泰國打工捞镰, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留闸与,地道東北人。 一個月前我還...
    沈念sama閱讀 48,837評論 3 376
  • 正文 我出身青樓岸售,卻偏偏與公主長得像践樱,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子凸丸,可洞房花燭夜當晚...
    茶點故事閱讀 45,455評論 2 359

推薦閱讀更多精彩內(nèi)容