我试图控制UITextField中的光标位置.用户不能一次插入多个字符到文本字段的中间.它将它移动到文本字段的末尾.所以SO中的帖子:在UITextField中控制光标位置它解决了我的问题.但我需要知道当前光标位置.
我的代码看起来像这样:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string
{
if (textField.tag == 201)
{
[myclass selectTextForInput:textField atRange:NSMakeRange(idx, 0)];
}
}
Run Code Online (Sandbox Code Playgroud)
它在idx给我一个错误.我怎么找到的?
rma*_*ddy 27
UITextField符合UITextInput具有获取当前选择的方法的协议.但这些方法很复杂.你需要这样的东西:
- (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementString:(NSString *)string {
if (textField.tag == 201) {
UITextRange *selRange = textField.selectedTextRange;
UITextPosition *selStartPos = selRange.start;
NSInteger idx = [textField offsetFromPosition:textField.beginningOfDocument toPosition:selStartPos];
[myclass selectTextForInput:textField atRange:NSMakeRange(idx, 0)];
}
}
Run Code Online (Sandbox Code Playgroud)
Swift版本
if let selectedRange = textField.selectedTextRange {
let cursorPosition = textField.offsetFromPosition(textField.beginningOfDocument, toPosition: selectedRange.start)
print("\(cursorPosition)")
}
Run Code Online (Sandbox Code Playgroud)
关于获取和设置光标位置的完整答案就在这里.
| 归档时间: |
|
| 查看次数: |
19447 次 |
| 最近记录: |