58 lines
1.7 KiB
Objective-C
58 lines
1.7 KiB
Objective-C
//
|
|
// 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
|