目前,我隐藏键盘时,用户点击任何地方。我想排除2 TextField
s点按以避免键盘隐藏/显示效果。
import SwiftUI
struct ContentView: View {
@FocusState var focus:FocusedField?
@State var name = ""
@State var email = ""
@State var phoneNumber = ""
var body: some View {
List {
TextField("Name:",text: $name)
.focused($focus, equals: .name)
.onSubmit {
focus = .email
}
TextField("Email:",text: $email)
.focused($focus, equals: .email)
.onSubmit {
focus = .phone
}
TextField("PhoneNumber:", text: $phoneNumber)
.focused($focus, equals: .phone)
.onSubmit {
if !name.isEmpty && !email.isEmpty && !phoneNumber.isEmpty {
submit()
}
}
}
.onTapGesture {
if (focus != nil) {
hideKeyboard()
}
}
}
private func submit() {
print("submit")
}
enum FocusedField: Hashable {
case name, email, phone
}
}
extension View {
func hideKeyboard() {
print("hideKeyboard")
let resign = #selector(UIResponder.resignFirstResponder)
UIApplication.shared.sendAction(resign, to: nil, from: nil, for: nil)
}
}
字符串
我想要:
1.一个稳定的键盘为我的TextField
s没有隐藏和显示效果。
1.轻按任意位置以关闭/隐藏键盘。
请查看以下效果:
x1c 0d1x的数据
2条答案
按热度按时间2uluyalo1#
自iOS 16以来,有一个定义键盘解除的修改器:
字符串
您可能需要
immediately
模式。型
这并不是在点击时关闭键盘,而是在滚动时关闭键盘,这是典型的iOS行为。
piok6c0g2#
我找到了答案。
字符串
在Zstack中使用这个公共结构。
型