SwiftUI:如何在使用 DatePicker 后隐藏键盘

问题描述 投票:0回答:2

用户在 DatePicker 中选择某个日期后如何隐藏键盘?

目前,当我点击名称 TextField,然后 - 显示键盘 - 我点击 DatePicker 时,当出现用于选择日期的 DatePicker 弹出窗口时,键盘会隐藏,但当我在 DatePicker 弹出窗口中选择某个日期后,键盘会再次出现。

如何才能让在DatePicker的弹出窗口中提交值后键盘不再出现?

import SwiftUI

struct EditView: View {
    @Binding var name: String
    @State private var birthday: Date = Date()
    
    @FocusState private var isTextFieldFocused
    
    var body: some View {
        Form {
            TextField("Name", text: $name)
                .focused($isTextFieldFocused)
            DatePicker("Birthday", selection: $birthday)
        }
    }
}

struct EditView_Previews: PreviewProvider {
    static var previews: some View {
        EditView(name: .constant(String("Joe")))
    }
}
swift xcode swiftui
2个回答
2
投票

FocusState 不是必需的,添加视图扩展来隐藏键盘

struct EditView: View {
@Binding var name: String = ""
@State private var birthday: Date = Date()
//@FocusState private var isTextFieldFocused

        var body: some View {
            Form {
                TextField("Name", text: $name)
                DatePicker("Birthday", selection: $birthday)
            }
            .onTapGesture {
                hideKeyboard()
            }
        }
}
extension View {
    func hideKeyboard() {
        UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil)
    }
}


0
投票

为什么它对我不起作用?由于某种原因,它似乎阻止了其他领域的工作。对我来说,只有切换有效,有时是扩展选择器的按钮,但日期选择器根本不起作用...... 我本来想发视频,但好像只能发图片

© www.soinside.com 2019 - 2024. All rights reserved.