我有一个表格,在用户有光标的地方输入一个字符串(来自表格的单元格标签) - 所以函数就像一个键盘,键盘而不是单个字符。
如果用户点击同一行两次,或者在选择第一行后点击另一行,我希望能够从用户所在的任何文本字段中删除相同的字符串(例如,Safari地址栏)。
下面的代码在首次单击行时插入文本 - 如何在单击行两次或选择其他行时删除该确切文本?
请注意,要插入的字符串都是不同的大小。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var string = buttonTitles[indexPath.row]
(textDocumentProxy as! UIKeyInput).insertText("\(string)")
}
答案 0 :(得分:0)
使用变量来跟踪最后按下的行。调用didSelectRowAtIndexPath
时,将新行(来自参数)与变量进行比较,如果它们相同,则删除该单词,如果它们不同,则删除该单词并添加新单词。
可能类似下面的代码。不确定退格技术是否有效,但是要尝试一下。
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
{
let newText = "\(buttonTitles[indexPath.row])"
let oldText = "\(buttonTitles[lastRow])"
var stringToAdd = ""
//only delete the text if a row has already been selected
if lastRow != -1 //-1 is a default value meaning there is no last row
{
//delete the old word
for i in 0 ..< oldText.length
{
stringToAdd += "\b" //add backspace characters to remove the old word
}
}
//add the new word
if indexPath.row != lastRow
{
stringToAdd += rowText
}
(textDocumentProxy as! UIKeyInput).insertText(stringToAdd)
lastRow = indexPath.row
}
答案 1 :(得分:0)
此代码对我有用 - 类似于上面的注释,但使用了deleteBackward方法,而且当选择两次时,它会取消突出显示该行。需要在类的开头定义lastRow = -1。
HList