WatchKit 2并发症文本仅在预览中显示

时间:2015-09-07 17:04:48

标签: swift watchkit apple-watch apple-watch-complication

我试图为 2开发一个非常简单的复杂功能,说明"嗨"来自一个简单的文本提供者。

我设法实现了一些奇怪的行为;单击复杂功能或从自定义表盘屏幕预览时可以看到文本,但是在显示表盘时却看不到。看看:

watchface behaviing strangely gif

任何可能导致此问题的想法?

我的文字提供商看起来像这样

var textProvider: CLKSimpleTextProvider

override init() {

    textProvider = CLKSimpleTextProvider()
    textProvider.text = "Hi"
    textProvider.shortText = "HI"
    textProvider.tintColor = UIColor.whiteColor()
    super.init()
}

我的getPlaceholderTemplateForComplication看起来像

func getPlaceholderTemplateForComplication(complication: CLKComplication, withHandler handler: (CLKComplicationTemplate?) -> Void) {
    // This method will be called once per supported complication, and the results will be cached

     switch complication.family {
     case .ModularSmall:
        let stemplate = CLKComplicationTemplateModularSmallSimpleText()
        stemplate.tintColor = UIColor.whiteColor()
        stemplate.textProvider = textProvider
        handler(stemplate)
     case .CircularSmall:
        let stemplate = CLKComplicationTemplateCircularSmallSimpleText()
        stemplate.tintColor = UIColor.whiteColor()
        stemplate.textProvider = textProvider
        handler(stemplate)
     default:
        handler(nil)
    }

}

1 个答案:

答案 0 :(得分:3)

在自定义表盘时,Apple Watches调用getPlaceholderTemplateForComplication:withHandler:来显示占位符文本。既然你已经实现了 - 你可以看到“嗨”。太棒了。 但是当显示表盘时,它会调用另一种方法,例如:

  • getCurrentTimelineEntryForComplication:withHandler:
  • getTimelineEntriesForComplication:beforeDate:limit:withHandler:
  • getTimelineEntriesForComplication:afterDate:limit:withHandler:

似乎你没有实现它们。因此,实施这些方法将解决您的问题。 您可以在本WWDC 2015教程中找到有关这些方法的更多详细信息:https://developer.apple.com/videos/wwdc/2015/?id=209