cdts/xdts-ios 3/TreeHole/Code/Utility/TextInputLimit/MTTextFieldLimitManager.m

58 lines
1.7 KiB
Mathematica
Raw Normal View History

2023-07-27 09:20:00 +08:00
//
// 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