cdts/xdts-ios 3/TreeHole/Code/Utility/TextInputLimit/MTTextFieldLimitManager.m
2023-07-27 09:20:00 +08:00

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