ScrollView 中的列表不会显示在 WatchOS 上



>我在滚动视图中有一个列表,它没有显示在图像和按钮下方。我还尝试将列表和其他项目放在 VStack 中,这允许我当时看到列表中的一个项目,而不是滚动图像和按钮以显示整个列表。

ScrollView{
Image(uiImage: self.image)
.resizable()
.frame(width: 80, height: 80)
.scaledToFit()
Text("(name)")
.lineLimit(2)
HStack{
Button(action: {
print("button1")
}){
Image(systemName: "pencil")
}
Button(action: {
print("button 2")
}){
Image(systemName: "trash")
}
}
List{
ForEach(self.items, id: .self) { item in
VStack{
Text(item.name)
.font(.headline)
.lineLimit(1)
Text(item.subname)
.font(.subheadline)
.lineLimit(1)
}
}
}
}
.navigationBarTitle(Text("Tittle"))
.edgesIgnoringSafeArea(.bottom)

我还试图将.frame( minHeight: 0, maxHeight: .infinity) 添加到列表中,以迫使它具有整个高度,但这也没有奏效。任何建议,或者这可能是一个快速UI错误?

编辑

我刚刚意识到我在滚动时收到此错误:

APPNAME Watch Extension[336:60406] [detents] could not play detent NO, 2, Error Domain=NSOSStatusErrorDomain Code=-536870187 "(null)", (
{
Gain = "0.01799999922513962";
OutputType = 0;
SlotIndex = 4;
},
{
Gain = "0.6000000238418579";
OutputType = 1;
SlotIndex = 5;
}
)

为您的列表指明一些高度,例如

List{
ForEach(self.items, id: .self) { item in
VStack{
Text(item.name)
.font(.headline)
.lineLimit(1)
Text(item.subname)
.font(.subheadline)
.lineLimit(1)
}
}
}.frame(minHeight: 200, maxHeight: .infinity)

您是否尝试过将List放入GeometryReader并在那里设置frame

我在UIKit上遇到了同样的错误。错误消息与触觉反馈有关,请参阅此处.
它说无法播放触觉反馈,可能是类型 2,即directionDown,请参阅此处.
由于我的代码不调用play(_:),因此必须由watchOS本身调用.
错误的原因可能是滚动速度非常快,这可能导致对play(_:)的调用过于频繁而无法正确处理。文档说:

不要快速连续多次调用此方法。如果 当您调用此方法时,触觉引擎已经启动,系统将 停止当前反馈并施加 100 的最小延迟 在启动引擎以生成新反馈之前毫秒。

如果这真的是watchOS的效果,我想你不能做任何事情来避免错误。

相关内容

  • 没有找到相关文章

最新更新