在SwiftUI中为TextField指定minimumScaleFactor时,TextField在您输入文本时会正常运行,并在内容不适合TextView时按指定的方式缩小字体。但是,如果您开始删除字符,则一切正常,直到删除第一个字符。一切都冻结了。
起初,我虽然是通过某种方式来处理存储文本的变量,但在我的应用程序中,我将其作为ObservedObject。但是,在调试了冻结的应用程序后,我注意到代码反复遍历TextField的图形,在一个函数接一个函数的情况下,所有操作均指向屏幕上对象图形的错误。
以下代码说明了此问题。当您输入字符并删除它们直到到达第一个字符时,TextField可以完美地工作。它会冻结。
import SwiftUI
struct ContentView: View {
@State var sensorNumber: String = ""
var body: some View {
TextField("WC0.000.000.000", text: $sensorNumber)
.padding(.all, 5.0)
.font(Font.custom("Helvetica", size:40.0))
.minimumScaleFactor(0.90)
}
}
答案 0 :(得分:1)
该问题似乎与自定义字体的交互有关。显然,我的应用程序使用的是自定义字体,但在这里我只是想简化代码。
如果您不使用自定义字体或未指定minimumScaleFactor,则此代码不会失败。我发现一种解决方法不是很好,但是在Apple修复此错误之前它可以起作用:
import SwiftUI
struct ContentView: View {
@State var sensorNumber: String = ""
var body: some View {
TextField("WC0.000.000.000", text: $sensorNumber)
.padding(.all, 5.0)
.font(Font.custom("Helvetica", size:40.0))
.minimumScaleFactor(sensorNumber.count < 2 ? 1.0 : 0.90)
}
}
我正在向Apple提交雷达报告,但在此寻求更好的解决方案。