Controlling cursor position in a UITextField is complicated because so many abstractions are involved with input boxes and calculating positions. However, it's certainly possible. You can use the member function setSelectedTextRange
:
[input setSelectedTextRange:[input textRangeFromPosition:start toPosition:end]];
Here's a function which takes a range and selects the texts in that range. If you just want to place the cursor at a certain index, just use a range with length 0:
+ (void)selectTextForInput:(UITextField *)input atRange:(NSRange)range {
UITextPosition *start = [input positionFromPosition:[input beginningOfDocument]
offset:range.location];
UITextPosition *end = [input positionFromPosition:start
offset:range.length];
[input setSelectedTextRange:[input textRangeFromPosition:start toPosition:end]];
}
For example, to place the cursor at idx
in the UITextField input
:
[Helpers selectTextForInput:input
atRange:NSMakeRange(idx, 0)];
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…