无法在UITextView中设置光标位置
问题描述:
我正在研究高度依赖于UITextView的应用程序。我的理想行为是,当用户快速按下双空格时,文本光标会向前跳5个空格,为UIButton留出空间。我已经实现了下面的代码,但即使“quickSpace”区域中的所有其他操作都发生,光标也不会跳转。任何人都知道我在做什么错了?无法在UITextView中设置光标位置
更新:我认为问题在于我试图将光标跳到当前存在范围之外的某个点。换句话说,有人正在向UITextView输入新文本,并且范围被设置为光标所在的位置。这是范围的结束吗?是否可以发送光标超出当前存在的范围?
if(text==" "){
let now=Date()
if let last=previousSpaceTimestamp
{
if now.timeIntervalSince(last)<0.3
{
//mainTextBox.text=textView.text.appending("hello")
isQuickSpace=true
var checkOffButton: UIButton=createCheckButton()
checkOffButton.backgroundColor=UIColor.green
checkOffButton.frame.size=CGSize(width: 20, height: 20)
//checkOffButton.frame.offsetBy(dx: 0, dy: CGFloat(buttonYPos))
mainTextBox.addSubview(checkOffButton)
buttonYPos=buttonYPos+15
if let currentRange=mainTextBox.selectedTextRange
{
if let newPosition=mainTextBox.position(from: currentRange.start,
offset: 200)
{
mainTextBox.selectedTextRange=mainTextBox.textRange(from: newPosition,
to: newPosition)
}
}
return false
}
}
previousSpaceTimestamp=now
}
else
{
previousSpaceTimestamp=nil
}
return true
}
答
设置TextView范围像这样在主队列中。
DispatchQueue.main.async {
mainTextBox.isEditable = true
mainTextBox.selectedRange = NSMakeRange(2, 0)
}
那该去哪里? –
之后你需要把这个代码添加到TextView中 – Bala