设置光标的方法适用于UITextField
和UITextView
。
基础:
- 获取文本的最开头位置:
UITextPosition *_beginPosition = textField.beginningOfDocument;
- 获取文本的最尾部位置:
UITextPosition *_endPosition = textField.endOfDocument;
- 获取当前选中文本的范围:
UITextRange * _selectedRange = textField.selectedTextRange;
获取光标位置:
UITextPosition *_beginPosition = textField.beginningOfDocument;
UITextRange *_selectedRange = textField.selectedTextRange;
NSInteger _cursorPosition = [textField offsetFromPosition:_beginPosition toPosition:_selectedRange.start];
//_cursorPosition为光标所在位置
设置光标位置:
设置位置的根本方法是设置一个具有相同起始值和结束值的范围
- 设置在最前端
UITextPosition *_beginPosition = textField.beginningOfDocument;
textField.selectedTextRange = [textField textRangeFromPosition: _beginPosition toPosition: _beginPosition];
- 设置在最后端
UITextPosition *_endPosition = textField.endOfDocument;
textField.selectedTextRange = [textField textRangeFromPosition: _endPosition toPosition: _endPosition];
- 设置在任意位置
NSInteger _designatedValue = 5;
UITextPosition *_beginPosition = textField.beginningOfDocument;
UITextPosition *_newPosition = [textField positionFromPosition:_beginPosition offset:_designatedValue];
textField.selectedTextRange = [textField textRangeFromPosition:_newPosition toPosition:_newPosition];