45 lines
1.7 KiB
Mathematica
45 lines
1.7 KiB
Mathematica
|
|
//
|
||
|
|
// 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
|