【发布时间】:2022-01-05 16:35:06
【问题描述】:
对于 swiftui,是否有任何东西可以禁用/防止键盘出现在 TextField 中?
因为我正在设计一个计算器并从设计而不是键盘获取输入
【问题讨论】:
-
如果您不想让用户输入,请使用
Text
标签: swiftui keyboard textfield disable
对于 swiftui,是否有任何东西可以禁用/防止键盘出现在 TextField 中?
因为我正在设计一个计算器并从设计而不是键盘获取输入
【问题讨论】:
Text
标签: swiftui keyboard textfield disable
您可以将UITextField 与UIViewRepresentable 一起使用,这样您就可以阻止键盘显示。
import SwiftUI
struct KeyboardView: View {
@State var text: String = ""
@State var placHolder: String = "Enter username"
var body: some View {
VStack {
Spacer()
MyTextField(currentText: $text, placeHolder: $placHolder)
.padding(.horizontal, 40.0)
Spacer()
}
}
}
struct MyTextField: UIViewRepresentable {
@Binding var currentText: String
@Binding var placeHolder: String
func makeUIView(context: Context) -> UITextField {
let textField = UITextField()
textField.inputView = UIView() // hiding keyboard
textField.inputAccessoryView = UIView() // hiding keyboard toolbar
textField.placeholder = placeHolder
textField.textColor = UIColor.black
textField.font = UIFont.systemFont(ofSize: 22.0)
textField.delegate = context.coordinator
return textField
}
func updateUIView(_ textField: UITextField, context: Context) {
textField.text = currentText
}
func makeCoordinator() -> Coordinator {
Coordinator(text: $currentText)
}
class Coordinator: NSObject, UITextFieldDelegate {
@Binding var text: String
init(text: Binding<String>) {
self._text = text
}
}
}
参考:Prevent Keyboard from appearing when tapping on UITextField
【讨论】:
如果您已经有TextField 设置,您可以添加.disabled(true),
这将阻止键盘显示。
TextField("", text: $txt)
.disabled(true) // <--- here
【讨论】: