Swift TextView在退格时检测上一行

6tqwzwtp  于 2022-12-10  发布在  Swift
关注(0)|答案(1)|浏览(125)

问题:

我需要检测何时点击退格键并返回到上一行。
我们怎么能检测到一个退格键,它把我们带回到文本视图的上一行,而不是一个新行,而是上一行。
例如:我们可以通过给定的代码检测新行

if (text == "\n"){
   print("new line")
 }

我们可以侦测到退格键。

if (range.length == 1 && text.isEmpty){
       print("backspace pressed on keyboard") 
 }

**伪代码:**我们如何检测到一个退格键,它将我们带回到文本视图中的上一行,而不是一个新行,而是上一行。

func textView(_ textView: UITextView, shouldChangeTextIn range: NSRange, replacementText text: String) -> Bool {

if (range.length == 1 && text.isEmpty){
       print("backspace pressed on keyboard")
       if (backspace brought textview cursor back to its previous line){

       }

}

键盘输入:

按下return-〉转到新行
按退格键-〉返回到上一行

gdx19jrr

gdx19jrr1#

给出了过于简单的示例,您可以检查文本视图中更改范围的当前文本是否等于换行符。

if (textView.text as NSString).substring(with: range) == "\n" {

请记住,文本视图中的文本可以换行而无需输入换行符。这对于您的用例可能很重要,也可能不重要。这也意味着文本可以“展开”而无需删除换行符。
你似乎在假设光标在文本的末尾。不确定你想如何处理用户删除中间的某个地方。或者用户选择一堆文本并删除呢?
还要注意,你的退格键检查并不是真正的退格键检查,如果用户选择一个字符,然后选择剪切菜单,也可以满足这个条件。

相关问题