如何在UITextView中设置光标的位置

GUR*_*URU 29 iphone objective-c uitextview ios

我的iPhone应用程序中有一个可编辑的UITextView.

每当用户选择特定功能时,都会在UITextView内创建新按钮.

由于按钮总是放在文本视图的左侧,我需要将光标放在按钮的右侧,以便用户可以看到他们正在键入的内容.我似乎无法找到一个文档(或未记录)方法来设置光标的位置.

有没有人有任何想法或有其他人有类似的东西吗?

Cas*_*hew 52

我知道这已经很晚了,但我想我可以帮助那些陷入困境的人(像我一样).

performSelector:withObject:afterDelay似乎很好地工作(其他的答案只是不会为一些奇怪的原因工作):

- (void)textViewDidBeginEditing:(UITextView *)inView 
{ 
[self performSelector:@selector(setCursorToBeginning:) withObject:inView afterDelay:0.01]; 
} 

- (void)setCursorToBeginning:(UITextView *)inView 
{ 
//you can change first parameter in NSMakeRange to wherever you want the cursor to move
inView.selectedRange = NSMakeRange(3, 0); 
} 
Run Code Online (Sandbox Code Playgroud)

来源:http://puppenspieler.tumblr.com/post/757819650/set-selectedrange-in-a-uitextview


Eva*_*van 21

textView.editable = YES;
textView.selectedRange = NSMakeRange(2, 0);
Run Code Online (Sandbox Code Playgroud)

将selectedRange设置为长度为0的位置,您可能还希望textView可编辑,因此也将其设置为YES.


小智 17

尝试这样的事情:

dispatch_async(dispatch_get_main_queue(), ^{
    inView.selectedRange = NSMakeRange(3, 0);
});
Run Code Online (Sandbox Code Playgroud)

这将导致selectedRange在下一个runloop开头的主线程上执行.


blw*_*ers 6

我使用Swift 4,使用以下内容到达textView的开头:

DispatchQueue.main.async {
    self.selectedTextRange = self.textRange(from: self.beginningOfDocument, to: self.beginningOfDocument)
}
Run Code Online (Sandbox Code Playgroud)