TextField 一行代碼搞定輸入限制

網(wǎng)上有很多介紹輸入限制的文章
原理請參看這篇文章,我只是做了一個簡單的封裝而已

這里可以貼出全部代碼

#import <UIKit/UIKit.h>

@interface UITextField (TMRInputLimit)
- (void)inputLimitWithMaxLength:(NSInteger)maxLength;
@end
#import "UITextField+TMRInputLimit.h"
#import <objc/runtime.h>
@interface UITextField ()
@property (assign, nonatomic) NSNumber *maxLength;
@end
@implementation UITextField (TMRInputLimit)

- (void)setMaxLength:(NSNumber *)maxLength
{
    objc_setAssociatedObject(self, @selector(maxLength), maxLength, OBJC_ASSOCIATION_ASSIGN);
}

- (NSNumber *)maxLength
{
    return objc_getAssociatedObject(self, @selector(maxLength));

}

- (void)inputLimitWithMaxLength:(NSInteger)maxLength
{
    self.maxLength = [NSNumber numberWithInteger:maxLength];
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(textFieldEditChanged:) name:@"UITextFieldTextDidChangeNotification" object:self];
}

- (void)textFieldEditChanged:(NSNotification *)obj
{
    NSInteger maxLength = [self.maxLength integerValue];
    UITextField *field = (UITextField *)obj.object;
    NSString *toBeString = field.text;
    UITextRange *selectedRange = [field markedTextRange];
    UITextPosition *position = [field positionFromPosition:selectedRange.start offset:0];
    if (!position || !selectedRange)
    {
        if (toBeString.length > maxLength)
        {
            NSRange rangeIndex = [toBeString rangeOfComposedCharacterSequenceAtIndex:maxLength];
            if (rangeIndex.length == 1)
            {
                field.text = [toBeString substringToIndex:maxLength];
            }
            else
            {
                NSRange rangeRange = [toBeString rangeOfComposedCharacterSequencesForRange:NSMakeRange(0, maxLength)];
                field.text = [toBeString substringWithRange:rangeRange];
            }
        }
    }
    
}

- (void)dealloc
{
    [[NSNotificationCenter defaultCenter] removeObserver:self name:@"UITextFieldTextDidChangeNotification" object:self];
}

@end

使用時import這個分類

[_textField inputLimitWithMaxLength:6];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,138評論 25 708
  • 發(fā)現(xiàn) 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 15,414評論 4 61
  • 一、今日計劃 學習任務:做自己的CEO宣講會預計成果:收聽宣講會,做筆記預計時間:1.5h實際時間:0800 - ...
    RicciWoo閱讀 683評論 0 50
  • 以前總是老跟自己較勁喜歡一個人就一股腦的喜歡就有著一種每天荷爾蒙隨時迸發(fā)的感覺,可是隨著時間推移兩個人把這層窗戶紙...
    黃少爺閱讀 397評論 0 1
  • 你是否被別人的抱怨情緒喂養(yǎng)?是否又用自己的抱怨喂養(yǎng)別人? 前段時間一個朋友S突然在微信上找我聊天,他說自己心情很差...
    愛逗子閱讀 445評論 0 2

友情鏈接更多精彩內容