为了学习手表编程,我建立了一个小测试应用程序,它只包含一个图像和一个表格:
该应用程序由 iOS 和手表模拟器执行。应用程序正确设置了图像和表格内容。
当表格太长而无法完全放在手表屏幕上时,我希望点击表格可以滚动表格内容。然而,完整的手表内容是滚动的,包括图像(请注意绿盘已经滚动到一半看不见了):
我该怎么做才能使图像固定在屏幕上,但允许表格内容垂直滚动?
虽然私有 API 支持您想要执行的操作,但该功能在 watchOS 2 或 watchOS 3 中均不公开提供给我们。
我们仅限于整个界面滚动(当它的内容大于屏幕大小时),或者整个界面根本不滚动(当它的内容适合屏幕大小时)。
您可能想要提交一个功能请求,要求提供静态组、粘性表格行标题或滚动区域。
新的WKCrownSequencer
andWKCrownDelegate
可以让你与场景或特定的界面对象进行交互,但是没有办法覆盖系统的手势识别和滚动支持来代表整个滚动界面控制器。
我不认为有一种优雅的方式来实现你现在想要的,那会很完美。
如果你不想等待 Apple 最终为你想要的东西提供适当的支持,这里有一些选项可以帮助你从不同的方向解决这个问题。
尝试用选择器替换桌子。选择器可以让您在较小的屏幕上滚动浏览不同的项目,但它显然不会看起来像一张桌子。
将您的表格限制为不超过屏幕大小的固定行数。您可以在表冠滚动时更新行内容,但这将是分页效果而不是滚动效果。
下拉到 Core Graphics 以绘制位置活动指示器或表格文本以创建屏幕的一部分正在(不)滚动的错觉。
更改表格行的背景颜色,并让背景颜色作为位置活动指示器。
在 watchOS 3 中,只需通过以下方式将任何对象设置为委托:
let crownSequencer = WKExtension.shared().rootInterfaceController!.crownSequencer
crownSequencer.delegate = self
crownSequencer.focus()
然后通过实现读回该值:
func crownDidRotate(_ crownSequencer: WKCrownSequencer?, rotationalDelta: Double)