【发布时间】:2017-06-15 03:50:25
【问题描述】:
我正在开发一个高度依赖 UITextView 的应用程序。我的理想行为是当用户快速按下双空格时,文本光标将向前跳 5 个空格为 UIButton 腾出空间。我已经实现了以下代码,但是即使“quickSpace”区域中的所有其他操作都发生了,光标似乎也没有跳跃。有谁知道我做错了什么?
更新:我认为问题在于我试图将光标跳转到当前存在范围之外的点。换句话说,有人正在向 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
}
【问题讨论】:
标签: ios swift cursor uitextview