本文待完善.......
在平時開發(fā)中會處理一些復(fù)制數(shù)字到文本框中篮绿,需要控制光標(biāo)的位置孵延,代碼如下,需要用到的童鞋可以看下亲配,親測可用
//更新光標(biāo)位置
- (void)updateLocationAfterCopyWithTextField:(UITextField *)textField offset:(NSInteger)offset {
NSRange currentRange = [self selectedRangeWithTextField:textField];
if (currentRange.location < offset) {
offset = currentRange.location;
}
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ //必須加延遲尘应,否則無法更新光標(biāo)位置
[self setSelectedRange:NSMakeRange(offset, 0) textField:textField];
});
}
#pragma mark - Zachary - 獲取&設(shè)置光標(biāo)位置
- (NSRange)selectedRangeWithTextField:(UITextField *)textField {
NSInteger location = [textField offsetFromPosition:textField.beginningOfDocument toPosition:textField.selectedTextRange.start];
NSInteger length = [textField offsetFromPosition:textField.selectedTextRange.start toPosition:textField.selectedTextRange.end];
return NSMakeRange(location, length);
}
- (void)setSelectedRange:(NSRange)selectedRange textField:(UITextField *)textField {
//beginningOfDocument 內(nèi)容啟始位置
UITextPosition *startPosition = [textField positionFromPosition:textField.beginningOfDocument offset:selectedRange.location];
//selectedRange.length 選中的
UITextPosition *endPosition = [textField positionFromPosition:textField.beginningOfDocument offset:selectedRange.location + selectedRange.length];
UITextRange *selectedTextRange = [textField textRangeFromPosition:startPosition toPosition:endPosition];
[textField setSelectedTextRange:selectedTextRange];
}
使用的時候惶凝,直接調(diào)用
if (textField.tag == 1002 && string.length > 5) { //郵編
string = [string substringToIndex:6];
[self updateLocationAfterCopyWithTextField:textField offset:6];
}