gpt4 book ai didi

ios - SwiftUI 文本字段触发器手动提交 iOS

转载 作者:行者123 更新时间:2023-12-01 15:23:13 28 4
gpt4 key购买 nike

我遇到的问题是 十进制格式化程序 除非 不会触发和更新绑定(bind)textField 获得触发的提交事件 ,即点击返回。
因此,我正在寻找 你如何手动触发文本字段提交事件?
下面的格式化程序代码将采用任何数字,并确保它始终有一位小数(即 10.5),并且如果插入了我想要的字母字符,也会将输入恢复为先前的有效输入。

import SwiftUI
import Combine

struct StandardRegimen: View {
@State private var totalDose = 6000.0

private var decimalFormatter: NumberFormatter = {
let f = NumberFormatter()
f.isLenient = true
f.numberStyle = .none
f.maximumFractionDigits = 1
f.minimumFractionDigits = 1
f.alwaysShowsDecimalSeparator = true
return f
}()

var body: some View{
return
VStack(alignment:.center,spacing:10){
TextField("?", value:$totalDose, formatter: self.decimalFormatter, onCommit: {
print("COMMITED!");
}).font(.system(size: 25.0))
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.decimalPad)
}
}
如果删除修饰符代码 .keyboardType(.decimalPad)并按 返回键 在键盘上它会触发 COMMITED 消息并关闭键盘
但是, 如果您将小数点修饰符保留在 那么就没有办法触发提交,因为小数点没有返回键。
我在这里写了一个关于如何通过点击开放空间区域( How to hide keyboard when using SwiftUI?)让键盘消失的答案
我已经研究了使用绑定(bind)到字符串和使用文本字段 text 的其他解决方案初始化器参数而不是值,因为这将与绑定(bind)值 一起正常工作但是每次击键都会更新一些非常不稳定的结果 (即,用户很难键入和编辑错误)当我正在寻找它来运行格式化程序 仅在提交 之后,我希望在用户点击关闭键盘时发生 因为我在十进制键盘上没有返回键选项。
对此问题的解决方案的任何帮助表示赞赏。

最佳答案

这可能有点晚了,但我想出了一个解决方法,可以将其他键盘类型与 TextField 一起使用。 : 我用 onEditingChanged事件而不是 onCommit事件并检查 Bool传递给方法的值。如果值为 false,它会复制 onCommit 的行为。方法。这是您的代码,但已格式化为使用我的方法:

import SwiftUI
import Combine

struct StandardRegimen: View {
@State private var totalDose = 6000.0

private var decimalFormatter: NumberFormatter = {
let f = NumberFormatter()
f.isLenient = true
f.numberStyle = .none
f.maximumFractionDigits = 1
f.minimumFractionDigits = 1
f.alwaysShowsDecimalSeparator = true
return f
}()

var body: some View{
VStack(alignment:.center,spacing:10){
TextField("?", value:$totalDose, formatter: self.decimalFormatter, onEditingChanged: { edit in
// Editing has finished
if !edit {
print("COMMITED!");
}
}).font(.system(size: 25.0))
.textFieldStyle(RoundedBorderTextFieldStyle())
.keyboardType(.decimalPad)
}
}
}
该解决方案应该适用于所有键盘类型(我只测试过普通键盘和数字键盘)。

关于ios - SwiftUI 文本字段触发器手动提交 iOS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59418212/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com