繁体   English   中英

Swiftui - 禁止键盘在 TextField 中显示

[英]Swiftui - Disable Keyboard from showing up for TextField

对于 swiftui 是否有任何东西可以禁用/防止键盘出现在 TextField 中?

因为我正在设计一个计算器并从设计而不是键盘获取输入

您可以将UITextFieldUIViewRepresentable一起使用,这样您就可以阻止键盘显示。

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
        }
    }
}

参考: 点击UITextField时防止键盘出现

如果您已经设置了TextField ,则可以添加.disabled(true) ,这将阻止键盘显示。

TextField("", text: $txt)
   .disabled(true)  // <--- here

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM