SwiftUI-watchOS DigitalCrown滚动未初始化?

时间:2020-05-16 13:57:35

标签: scroll swiftui watchkit

我在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...")
}
}

0 个答案:

没有答案