【问题标题】:SwiftUI detect delete button pressedSwiftUI检测删除按钮被按下
【发布时间】:2021-02-05 01:39:25
【问题描述】:

我正在使用 SwiftUI,但我正在编写自己的自定义文本掩码,但当用户按下“删除”键时我需要删除。我正在使用onChange 方法,但它没有检测到何时按下特殊键。目前我正在使用:

TextField(self.placeholder, text: self.$text)
.onChange(of: self.text, perform: { value in
    print(value)
})

有没有办法检测删除按钮是否被按下? 还是应该使用UITextField 而不是TextField

【问题讨论】:

标签: swiftui


【解决方案1】:

好吧,你可以使用一种 hacky 方式。

  • 首先,我们将统计文本字符串中的当前字符数。
  • 每当用户按下退格键时,我们会在 onChange 处理程序中检查前一个字符数是否高于新字符数
  • 如果是这种情况,我们会删除整个字符串,或者按下删除按钮时您想要执行的任何操作。
import SwiftUI
struct SquareView: View {
    
    var placeholder = "test"
    @State var text = "test"
    @State var textLen = 4
    
    var body: some View {
        VStack {
            TextField(self.placeholder, text: self.$text)
            .onChange(of: self.text, perform: { value in
                if value.count < textLen {
                    self.text = "" // << removed the whole text but here you can insert anything you want to do when the delete button is pressed
                }
                textLen = value.count
            })
        }
    }
}

请记住,这是一种 hacky 方式并且会带来风险。例如,如果用户粘贴的内容比当前文本短。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 2016-05-31
    • 1970-01-01
    • 2012-05-24
    • 1970-01-01
    • 2019-04-09
    • 1970-01-01
    相关资源
    最近更新 更多