我们的 iPhone 应用程序中有一个可编辑的 UITextView。当用户按下一些工具栏按钮时,我们需要在光标位置插入一些文本,但似乎找不到找到光标当前位置的记录(或未记录)方法。
有没有人有任何想法或其他人是否取得了类似的成就?
我们的 iPhone 应用程序中有一个可编辑的 UITextView。当用户按下一些工具栏按钮时,我们需要在光标位置插入一些文本,但似乎找不到找到光标当前位置的记录(或未记录)方法。
有没有人有任何想法或其他人是否取得了类似的成就?
就像 drawh 说的,你可以使用 UITextView 的 selectedRange 来返回插入点。此范围的长度始终为零。下面的例子展示了如何做到这一点。
NSString *contentsToAdd = @"some string";
NSRange cursorPosition = [tf selectedRange];
NSMutableString *tfContent = [[NSMutableString alloc] initWithString:[tf text]];
[tfContent insertString:contentsToAdd atIndex:cursorPosition.location];
[theTextField setText:tfContent];
[tfContent release];
斯威夫特 4:
// lets be safe, thus if-let
if let cursorPosition = textView.selectedTextRange?.start {
// cursorPosition is a UITextPosition object describing position in the text
// if you want to know its position in textView in points:
let caretPositionRect = textView.caretRect(for: cursorPosition)
}
我们只是textView.selectedTextRange
用来获取选定的文本范围和光标位置在它的start
位置。
当文本视图是第一响应者时,使用UITextView selectedRange
属性查找插入点。否则,当视图不在焦点上时,此属性返回NSNotFound
。如果您需要在这种情况下知道光标位置,请考虑子类化UITextView
和覆盖canResignFirstResponder
方法,您可以将光标位置存储到成员变量中。
你试过UITextView.selectedRange
吗?它返回一个NSRange
,它的位置元素应该告诉你光标在哪里。