Apple watch:如何仅滚动表格内容,而不是整个手表用户界面?

时间:2016-08-24 10:30:06

标签: storyboard watchkit apple-watch watch-os wkinterfacetable

要学习手表编程,我已经设置了一个只包含图像和表格的小测试应用程序:

enter image description here

该应用程序由iOS和手表模拟器执行。应用程序正确设置了图像和表格内容。

当桌子太长而无法完全放在手表屏幕上时,我希望点击桌面可以滚动桌面内容。 但是,滚动完整的观看内容,包括图像(请注意绿色磁盘已滚动一半不在视线范围内):
enter image description here

我需要做些什么才能将图像固定在屏幕上,同时允许桌面内容垂直滚动?

2 个答案:

答案 0 :(得分:2)

虽然私有API支持您要执行的操作,但在watchOS 2或watchOS 3中我们无法公开该功能。

我们仅限于整个界面滚动(当其内容大于屏幕尺寸时),或整个界面根本不滚动(当其内容符合屏幕尺寸时)。

您可能想要提交要求静态组,粘性表行标题或滚动区域的功能请求。

接近......

The new WKCrownSequencer and WKCrownDelegate可让您与场景或特定界面对象进行交互,但无法代表整个滚动界面控制器覆盖系统的手势识别和滚动支持。

我不认为这是一种优雅的方式来实现你现在想要的东西,这将是完美的。

如果你决定入侵或重新考虑这个......

如果您不想等待Apple最终为您想要的东西提供适当的支持,这里有一些选项可以帮助您从不同的方向来解决这个问题。

  • 尝试用拣货员替换表格。选择器可以让您滚动浏览较小屏幕上的不同项目,但它显然不会看起来像一张桌子

  • 将表限制为固定行数,且不超过屏幕大小。您可以在皇冠滚动时更新行内容,但这将是分页效果而非滚动效果

  • 下拉到Core Graphics以绘制位置活动指示符或表格文本,以创建屏幕的一部分(不)滚动的错觉。

  • 更改表格行的背景颜色,并让背景颜色作为位置活动指示符。

答案 1 :(得分:0)

在watchOS 3中,只需通过以下方式将任何对象设置为委托:

{% comment %} +++++ Max number of posts to print +++++ {% endcomment %}
{% assign limit = 4 %}

{% comment %} +++++ Select authors posts +++++{% endcomment %}
{% assign authorsPosts = site.posts | where: "author", page.author %}

{% comment %} +++++ If author's Posts number is less than limit, we change the limit +++++ {% endcomment %}
{% if limit >= authorsPosts.size %}
  {% comment %} +++++ Number of "listable" posts is author's posts number less 1 (the one actually printed) +++++ {% endcomment %}
  {% assign limit = authorsPosts.size | minus: 1 %}
{% endif %}

{% assign postsCounter = 0 %}
{% for post in authorsPosts %}
  {% if page.author == post.author and page.title != post.title %}

    {% assign postsCounter = postsCounter | plus: 1 %}

    <h3>{{ post.title }}</h3>

    {% comment %} +++++ Prints hr only if we are not printing the last post +++++ {% endcomment %}
    {% if postsCounter < limit %}<hr>{% endif %}

    {% comment %} +++++ Exit for loop if we reached the limit +++++ {% endcomment %}
    {% if postsCounter == limit %}{% break %}{% endif %}

  {% endif %}
{% endfor %}

然后通过实现:

回读该值
let crownSequencer = WKExtension.shared().rootInterfaceController!.crownSequencer
crownSequencer.delegate = self
crownSequencer.focus()