29

我们的 iPhone 应用程序中有一个可编辑的 UITextView。当用户按下一些工具栏按钮时,我们需要在光标位置插入一些文本,但似乎找不到找到光标当前位置的记录(或未记录)方法。

有没有人有任何想法或其他人是否取得了类似的成就?

4

4 回答 4

31

就像 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];
于 2009-03-06T15:14:09.213 回答
11

斯威夫特 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位置。

于 2018-03-01T15:58:47.187 回答
10

当文本视图是第一响应者时,使用UITextView selectedRange属性查找插入点。否则,当视图不在焦点上时,此属性返回NSNotFound。如果您需要在这种情况下知道光标位置,请考虑子类化UITextView和覆盖canResignFirstResponder方法,您可以将光标位置存储到成员变量中。

于 2009-03-06T15:46:29.727 回答
8

你试过UITextView.selectedRange吗?它返回一个NSRange,它的位置元素应该告诉你光标在哪里。

于 2009-03-06T14:56:05.670 回答