Can I select a specific block of text in a UITextField?

前端 未结 7 1180
盖世英雄少女心
盖世英雄少女心 2020-11-28 13:43

I have a UITextField in my iPhone app. I know how to make the text field select all of its text, but how can change the selection? Say I wanted to select the last 5 characte

7条回答
  •  野性不改
    2020-11-28 13:55

    Just a small addition to the accepted answer. In iOS 5, the following line crashes my app when UITextView's text length is 0 (has no text):

    [self textRangeFromPosition:startPosition toPosition:endPosition];
    

    A small workaround is to add a length == 0 check like:

    if (textField.text && textField.text.length > 0) {
        // Get current selected range , this example assumes is an insertion point or empty selection
        UITextRange *selectedRange = [textField selectedTextRange];
    
        // Calculate the new position, - for left and + for right
        UITextPosition *newPosition = [textField positionFromPosition:selectedRange.start offset:-5];
    
        // Construct a new range using the object that adopts the UITextInput, our textfield
        UITextRange *newRange = [textField textRangeFromPosition:newPosition toPosition:selectedRange.start];
    
        // Set new range
        [textField setSelectedTextRange:newRange];
    }
    

提交回复
热议问题