// // 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 #import "MTTextFieldLimitManager.h" @implementation UITextField (MTLimit) static char MTTextFieldLimitManagerKey; - (void)mt_setupLimitTextFieldWithBytesLength:(NSInteger)maxLength delegate:(nullable id)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