You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

iOS 26中SwiftUI如何移除键盘上方的Glasstic边框?

移除iOS 26 SwiftUI应用键盘上方的Glasstic边框及内边距

在iOS 26中,SwiftUI的TextField唤起键盘时,顶部会出现Glasstic样式边框,同时伴随额外内边距导致键盘无法全屏显示。以下是两种可行的解决方法:

方法一:隐藏键盘工具栏(简洁方案)

直接通过SwiftUI内置修饰符隐藏键盘上方的工具栏,即可移除Glasstic边框和多余内边距:

struct EditTextExamplesView: View {
    @State private var name = ""

    var body: some View {
        TextField("Enter name", text: $name)
            .textFieldStyle(.roundedBorder)
            .toolbar(.hidden, for: .keyboard) // 隐藏键盘工具栏
    }
}

方法二:使用UIKit原生输入框包装(彻底方案)

如果需要完全规避SwiftUI TextField的默认行为,可以用UIViewRepresentable包装UIKit的UITextField,原生UIKit输入框不会附带该边框:

struct CustomTextField: UIViewRepresentable {
    let placeholder: String
    @Binding var text: String
    
    func makeUIView(context: Context) -> UITextField {
        let textField = UITextField()
        textField.placeholder = placeholder
        textField.borderStyle = .roundedRect
        textField.delegate = context.coordinator
        return textField
    }
    
    func updateUIView(_ uiView: UITextField, context: Context) {
        uiView.text = text
    }
    
    func makeCoordinator() -> Coordinator {
        Coordinator(self)
    }
    
    class Coordinator: NSObject, UITextFieldDelegate {
        let parent: CustomTextField
        
        init(_ parent: CustomTextField) {
            self.parent = parent
        }
        
        func textFieldDidChangeSelection(_ textField: UITextField) {
            parent.text = textField.text ?? ""
        }
    }
}

// 使用自定义输入框
struct EditTextExamplesView: View {
    @State private var name = ""

    var body: some View {
        CustomTextField(placeholder: "Enter name", text: $name)
    }
}

内容的提问来源于stack exchange,提问作者Joya Roy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 07:12:49