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