cdts/xdts-ios 3/TreeHole/Code/Utility/TextInputLimit/UITextField+MTLimit.m

45 lines
1.7 KiB
Mathematica
Raw Normal View History

2023-07-27 09:20:00 +08:00
//
// UITextField+MTLimit.m
// Meet
//
// Created by ko1o on 2018/10/22.
// Copyright © 2018 ko1o. All rights reserved.
//
#import "UITextField+MTLimit.h"
#import "NSString+MTLimit.h"
#import <objc/runtime.h>
#import "MTTextFieldLimitManager.h"
@implementation UITextField (MTLimit)
static char MTTextFieldLimitManagerKey;
- (void)mt_setupLimitTextFieldWithBytesLength:(NSInteger)maxLength delegate:(nullable id<MTTextFieldLimitDelegate>)delegate
{
MTTextFieldLimitManager *oldLimitManager = objc_getAssociatedObject(self, &MTTextFieldLimitManagerKey);
if (oldLimitManager) {
[oldLimitManager removeLimitTextField:self];
}
MTTextFieldLimitManager *limitManager = [[MTTextFieldLimitManager alloc]init];
[limitManager setupLimitTextField:self bytesLength:maxLength];
limitManager.limitDelegate = delegate;
objc_setAssociatedObject(self, &MTTextFieldLimitManagerKey, limitManager, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
}
-(NSRange)mt_selectedRange{
NSInteger location = [self offsetFromPosition:self.beginningOfDocument toPosition:self.selectedTextRange.start];
NSInteger length = [self offsetFromPosition:self.selectedTextRange.start toPosition:self.selectedTextRange.end];
return NSMakeRange(location, length);
}
-(void)setMt_selectedRange:(NSRange)selectedRange
{
UITextPosition *startPosition = [self positionFromPosition:self.beginningOfDocument offset:selectedRange.location];
UITextPosition *endPosition = [self positionFromPosition:self.beginningOfDocument offset:selectedRange.location + selectedRange.length];
UITextRange *selectedTextRange = [self textRangeFromPosition:startPosition toPosition:endPosition];
[self setSelectedTextRange:selectedTextRange];
}
@end