SwiftUI,使用按钮将文本字段内的值相乘

Posted

技术标签:

【中文标题】SwiftUI,使用按钮将文本字段内的值相乘【英文标题】:SwiftUI, using a button to multiply values inside textfields 【发布时间】:2020-06-15 09:23:29 【问题描述】:

我是编码、Swift 和 Xcode 的新手。我正在创建一个应用程序,它将乘以 3 个值(长度、宽度、高度)来计算特定对象的体积。

该应用程序的最终目标是能够计算许多对象的体积,并拥有一个“总”值,该值将为您累积累加体积。开始我的应用程序我有一个排序的布局,其中包括用户将在其中输入值(长度、宽度、高度)的三个文本字段和一个具有“Total =”的文本。我已成功使用以下方法使文本字段接受双精度:

TextField("length", value: $length, formatter: NumberFormatter())

我正在使用一个按钮来执行乘法运算:

Button(action: self.equation = self.length * self.width * self.thickness)

还有一个Text 将显示值:

Text("Total= \(equation)")

不幸的是,当我运行应用程序时,将值插入每个文本字段并点击按钮“Total=”Text 不执行按钮的操作。只是想弄清楚我哪里出错了。

【问题讨论】:

【参考方案1】:

TextField with formatter 在显式提交之前不会应用输入字符串,因此请尝试以下操作

extension UIApplication   // just helper extension
    static func endEditing() 
        UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, for:nil)
    

Button(action: 
    UIApplication.endEditing()    // << here !!
    self.equation = self.length * self.width * self.thickness
)

【讨论】:

感谢您的回复,我在哪里插入这段代码 extension UIApplication // 只是辅助扩展 static func endEditing() UIApplication.shared.sendAction(#selector(UIResponder.resignFirstResponder), to:nil, from:nil, for:nil) @johnboumelhem,全球空间中的任何地方(即任何类/结构/等之外)

以上是关于SwiftUI,使用按钮将文本字段内的值相乘的主要内容,如果未能解决你的问题,请参考以下文章

当嵌入到 SwiftUI 中的 ScrollView 中时,VStack 内的内容会缩小

SwiftUI - 检测文本字段中的变化

SwiftUI 清除文本字段 FirstResponder

SwiftUI - 在按钮单击时添加一行多个文本字段/视图

清除按钮按下swiftui时如何自动上一个文本字段

OSX 中的 SwiftUI 自定义文本字段