iOS UITextField 光標(biāo)控制

本文待完善.......

在平時(shí)開(kāi)發(fā)中會(huì)處理一些復(fù)制數(shù)字到文本框中,需要控制光標(biāo)的位置,代碼如下,需要用到的童鞋可以看下,親測(cè)可用

//更新光標(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(), ^{ //必須加延遲,否則無(wú)法更新光標(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];
}

使用的時(shí)候,直接調(diào)用

if (textField.tag == 1002 && string.length > 5) { //郵編  
    string =  [string substringToIndex:6];
    [self updateLocationAfterCopyWithTextField:textField offset:6];
 }
    
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容