UITextField字數限制

前言

UITextField、UITextView字數輸入限制相信是大多數朋友項目開發(fā)中都會遇到的基本需求胶惰,網上的解決方案也挺多的哎迄,有采用Delegate的也有添加采用監(jiān)聽的方式谭贪。一開始小編也采用監(jiān)聽的方式蜡励,后面發(fā)現代碼看起來嫉妒不簡潔令花,使用起來也比較麻煩阻桅,所以進行了優(yōu)化。下面先介紹一開始采用的方式以及優(yōu)化的過程兼都,著急的盆友可以直接到查看文末嫂沉,也可以下載優(yōu)化后的文件哦~

監(jiān)聽方式

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldDidChange:) name:UITextFieldTextDidChangeNotification object:self.verificationTF];

- (void) textFieldDidChange:(NSNotification *)notification {
// 處理字數限制  
}

以這種的話就得在需要字數限制的地方都得加上以上的監(jiān)聽和實現,所以是十分繁瑣扮碧。

分類方式

經過一番思考之后采用了分類+Runtime的方法趟章。具體實現如下:

  • 給分類添加最長字數和編輯代理回調的屬性
typedef void(^UITextFieldLimitBlock)(void);

// 編輯代理回調
@property (nonatomic, copy) UITextFieldLimitBlock limitBlock;

/// 最長字數
@property (nonatomic, assign) int maxLength;
  • 添加兩個調用方法
/**
 字數限制-不自動裁剪

 @param limitBlock UITextFieldLimitBlock
 */
- (void)lengthLimit:(UITextFieldLimitBlock)limitBlock;

/**
 字數限制-自動裁剪

 @param maxLength 最大長度
 @param limitBlock UITextFieldLimitBlock
 */
- (void)lengthLimitWithMaxLength:(int)maxLength limitBlock:(UITextFieldLimitBlock)limitBlock;

  • 利用Runtime給分類關聯對象
- (void)setLimitBlock:(UITextFieldLimitBlock)limitBlock
{
    objc_setAssociatedObject(self, &limit, limitBlock, OBJC_ASSOCIATION_COPY);
}

- (UITextFieldLimitBlock)limitBlock
{
    return objc_getAssociatedObject(self, &limit);
}

- (void)setMaxLength:(int)maxLength
{
    objc_setAssociatedObject(self, &length, @(maxLength), OBJC_ASSOCIATION_COPY);
}

- (int)maxLength
{
    NSNumber *maxLength = objc_getAssociatedObject(self, &length);
    return [maxLength intValue];
}
  • 調用方法如下
[self.textField lengthLimit:^{
// 處理字數改變        
}];

Runtime真是個大寶貝,有何疑問或是有更好方法的盆友歡迎下方評論交流哦~
Demo地址:UITextField-Expand 喜歡的盆友可以給顆小星星哦~

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末芬萍,一起剝皮案震驚了整個濱河市尤揣,隨后出現的幾起案子搔啊,更是在濱河造成了極大的恐慌柬祠,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,290評論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件负芋,死亡現場離奇詭異漫蛔,居然都是意外死亡,警方通過查閱死者的電腦和手機旧蛾,發(fā)現死者居然都...
    沈念sama閱讀 90,107評論 2 385
  • 文/潘曉璐 我一進店門莽龟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人锨天,你說我怎么就攤上這事毯盈。” “怎么了病袄?”我有些...
    開封第一講書人閱讀 156,872評論 0 347
  • 文/不壞的土叔 我叫張陵搂赋,是天一觀的道長。 經常有香客問我益缠,道長脑奠,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,415評論 1 283
  • 正文 為了忘掉前任幅慌,我火速辦了婚禮宋欺,結果婚禮上,老公的妹妹穿的比我還像新娘胰伍。我一直安慰自己齿诞,他們只是感情好,可當我...
    茶點故事閱讀 65,453評論 6 385
  • 文/花漫 我一把揭開白布骂租。 她就那樣靜靜地躺著祷杈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪菩咨。 梳的紋絲不亂的頭發(fā)上吠式,一...
    開封第一講書人閱讀 49,784評論 1 290
  • 那天陡厘,我揣著相機與錄音,去河邊找鬼特占。 笑死糙置,一個胖子當著我的面吹牛,可吹牛的內容都是我干的是目。 我是一名探鬼主播谤饭,決...
    沈念sama閱讀 38,927評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼懊纳!你這毒婦竟也來了揉抵?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,691評論 0 266
  • 序言:老撾萬榮一對情侶失蹤嗤疯,失蹤者是張志新(化名)和其女友劉穎冤今,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體茂缚,經...
    沈念sama閱讀 44,137評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡戏罢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,472評論 2 326
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了脚囊。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片龟糕。...
    茶點故事閱讀 38,622評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖悔耘,靈堂內的尸體忽然破棺而出讲岁,到底是詐尸還是另有隱情,我是刑警寧澤衬以,帶...
    沈念sama閱讀 34,289評論 4 329
  • 正文 年R本政府宣布缓艳,位于F島的核電站,受9級特大地震影響泄鹏,放射性物質發(fā)生泄漏郎任。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,887評論 3 312
  • 文/蒙蒙 一备籽、第九天 我趴在偏房一處隱蔽的房頂上張望舶治。 院中可真熱鬧,春花似錦车猬、人聲如沸霉猛。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,741評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惜浅。三九已至,卻和暖如春伏嗜,著一層夾襖步出監(jiān)牢的瞬間坛悉,已是汗流浹背伐厌。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留裸影,地道東北人挣轨。 一個月前我還...
    沈念sama閱讀 46,316評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像轩猩,于是被迫代替她去往敵國和親卷扮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,490評論 2 348

推薦閱讀更多精彩內容