// // MTTextFieldLimitManager.m // Meet // // Created by ko1o on 2018/10/22. // Copyright © 2018年 ko1o. All rights reserved. // #import "MTTextFieldLimitManager.h" #import "UITextField+MTLimit.h" @interface MTTextFieldLimitManager() @property (nonatomic, assign) NSInteger maxNumberOfDescriptionChars; //最大限制字符个数 @end @implementation MTTextFieldLimitManager - (void)setupLimitTextField:(UITextField *)textField bytesLength:(NSInteger)maxLength { [textField addTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; self.maxNumberOfDescriptionChars = maxLength; } - (void)removeLimitTextField:(UITextField *)textField { [textField removeTarget:self action:@selector(textFieldDidChange:) forControlEvents:UIControlEventEditingChanged]; } - (void)cutTextField:(UITextField *)textField bytesLength:(NSInteger)maxLength { UITextRange *selectedRange = [textField markedTextRange]; // 获取高亮部分 中文联想 UITextPosition *posi = [textField positionFromPosition:selectedRange.start offset:0]; // 如果在变化中是高亮部分在变,就不要计算字符 if (selectedRange && posi) { return; } if (textField.text.mt_customByteLength > maxLength) { textField.text = [textField.text mt_safeSubStringWithByteLength:maxLength]; } } // 监听文本改变 - (void)textFieldDidChange:(UITextField*)textField { [self cutTextField:textField bytesLength: self.maxNumberOfDescriptionChars]; //设置代理 (扩展) if (self.limitDelegate && [self.limitDelegate respondsToSelector:@selector(limitTextFieldDidChange:)]) { [self.limitDelegate limitTextFieldDidChange:textField]; } } @end