我的iPhone应用程序中有一个可编辑的UITextView。如何设置光标在UITextView中的位置
每当用户选择特定功能时,都会在UITextView内部创建新按钮。
由于按钮总是放在文本视图的左侧,因此我需要将光标放在按钮的右侧,以便用户可以看到他们正在输入的内容。 我似乎无法找到记录(或未记录)的方法来设置游标的位置。
有没有人有任何想法或有任何其他人取得类似的东西?
我的iPhone应用程序中有一个可编辑的UITextView。如何设置光标在UITextView中的位置
每当用户选择特定功能时,都会在UITextView内部创建新按钮。
由于按钮总是放在文本视图的左侧,因此我需要将光标放在按钮的右侧,以便用户可以看到他们正在输入的内容。 我似乎无法找到记录(或未记录)的方法来设置游标的位置。
有没有人有任何想法或有任何其他人取得类似的东西?
textView.editable = YES;
textView.selectedRange = NSMakeRange(2, 0);
设置到的selectedRange用0长度的位置,你可能也想TextView的可编辑这样也设置为YES。
我试过这个,但还是不行。 – GURU 2012-01-17 07:53:20
更改selectedRange
您的textView。例如,将光标在第3位:
[textView setSelectedRange:NSMakeRange(3, 0)];
在你的情况下,加在TextView的内容可能有助于一些空间。和观察者textview 's textDidChanged event
以防止这些空间被用户删除。
我知道这是非常晚,但我想我可以帮助人们坚持在这个(如我)。
的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
尝试是这样的:
dispatch_async(dispatch_get_main_queue(), ^{
inView.selectedRange = NSMakeRange(3, 0);
});
这将导致selectedRange在下一个runloop开始时在主线程上执行。
完美无暇! +1 – 2015-09-08 03:17:15
第一次为我工作! +1 – 2017-01-27 11:16:33
如果您想让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
问题不是占位符。无所谓的答案 – 2016-08-11 09:44:54
我用下面去TextView的开始时,使用斯威夫特4:
DispatchQueue.main.async {
self.selectedTextRange = self.textRange(from: self.beginningOfDocument, to: self.beginningOfDocument)
}
你能张贴解释你想要做什么的图像? – 2012-01-17 07:41:22
我想发布它,但即时新在这里。不超过10的声望不允许发布图像。 zzz – GURU 2012-01-17 08:27:18