我在WatchOS上运行了一个简单的SwiftUI视图。它包含一个ScrollView中的文本字段列表,该列表长于屏幕的高度。
我希望Digital Crown能够通过自动使用它来自动滚动视图。这应该是WatchOS上Digital Crown的默认行为。
但是,当它出现时,只能使用上/下滑动手势滚动视图。一旦完成了“手动”滚动(使用手指),那么只有DigitalCrown会被“附加”,然后可以使用它(在“手动”滚动之后)来滚动视图。
我如何立即将视图“附加”到DigitalCrown(用于滚动)(即:无需先手动滚动)?
代码在下面。我已经尝试过“附加”(移动)了:
.focusable(true)
.digitalCrownRotation($scrollAmount)
归因于外部VStack和if语句之前的最后一个Text字段,但是无论我将上述两行放在什么位置(甚至删除它们!),其行为始终是相同的。
struct aboutView: View {
@EnvironmentObject var BLEinfo: BLEdata
@State private var scrollAmount = 1.0
var body: some View {
VStack {
Text("About")
.font(.system(size: CGFloat(self.BLEinfo.nonDynamicUIfontSize)))
.fontWeight(.semibold )
.padding(.top)
.focusable(false)
Divider()
ScrollView {
VStack {
Text("Sensor Inventor & Patents:")
.fixedSize()
Text("The Good Dr.")
.fontWeight(.semibold)
.fixedSize()
Text("Apple & Android Apps:")
.fixedSize()
.padding(.top)
Text("That's me..")
.fontWeight(.semibold)
.fixedSize()
Text("Integrated Hardware:")
.fixedSize()
.padding(.top)
Text("Jeff X")
.fontWeight(.semibold)
.fixedSize()
.padding(.bottom)
.focusable(true)
Text("This app version: ")
+ Text(self.BLEinfo.thisAppVersion)
.fontWeight(.semibold)
Text("Last Connected Device: ")
.padding(.top)
Text(self.BLEinfo.lastConnectedNameSaved)
.fontWeight(.semibold)
if !self.BLEinfo.lastConnectedNameSaved.contains("?") {
Text(self.BLEinfo.swVersionMtr)
.fontWeight(.semibold)
if !self.BLEinfo.firmwareVersionOK {
Text("New Mtr FW Available\nPlease UPDATE ASAP!")
}
}
}
}.digitalCrownRotation($scrollAmount)
}.font(.system(size: CGFloat(self.BLEinfo.nonDynamicUIfontSize) - 2))
.padding(.horizontal)
.navigationBarTitle("Scanning...")
}
}