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

我有一个UITextView在我的iPhone应用程序是可编辑的。

每当用户select一个特定的function,新的button是在UITextView内部创build的。

由于button总是放在文本视图的左侧,我需要将光标放在button的右侧,以便用户可以看到他们正在input的内容。 我似乎无法findlogging(或未logging)的方法来设置游标的位置。

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

我知道这是非常晚,但我想我可以帮助人们在这个(像我一样)。

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); } 

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

 textView.editable = YES; textView.selectedRange = NSMakeRange(2, 0); 

将selectedRange设置为长度为0的位置,您可能也希望textView是可编辑的,所以也将其设置为YES。

尝试这样的事情:

 dispatch_async(dispatch_get_main_queue(), ^{ inView.selectedRange = NSMakeRange(3, 0); }); 

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

改变你的textView的selectedRange 。 例如将光标放在位置3:

[textView setSelectedRange:NSMakeRange(3, 0)];

在你的情况下,在textView内容上添加一些空格可能会有所帮助。 和观察者textview 's textDidChanged event以防止这些空间将被用户删除。

如果你想让Texview占位符像我一样是必需或可选的。 看我的黑客

  func textViewDidBeginEditing(textView: UITextView) { if textView.text.isEmpty { if self.text == "Required" || self.text == "Optional" { dispatch_async(dispatch_get_main_queue(), { textView.selectedRange = NSMakeRange(0, 0) }); } } } func textViewDidEndEditing(textView: UITextView) { if CommonUtils.isEmptyString(textView.text) { if required { textView.text = "Required" } else { textView.text = "Optional" } textView.textColor = grayColor// } } func textViewDidChange(textView: UITextView) { if textView.text.isEmpty { if required { textView.text = "Required" } else { textView.text = "Optional" } textView.textColor = grayColor textView.selectedRange = NSMakeRange(0, 0) } else { if required { if textView.text.length > "Required".length { textView.text = self.text.replace("Required", withString: "") } } else { if textView.text.length > "Optional".length { textView.text = self.text.replace("Optional", withString: "") } } textView.textColor = blackColor// } } 

不要忘了注册委托: UITextViewDelegate

我使用以下来使用Swift 4来到textView的开头:

 DispatchQueue.main.async { self.selectedTextRange = self.textRange(from: self.beginningOfDocument, to: self.beginningOfDocument) }