Apple Watch 上 Retina 屏的 Force Touch 提供了一種新的與內(nèi)容交互的方式。與點擊屏幕上的項目不同,該特性需要一定的壓力才能激活與當(dāng)前界面控制器相關(guān)的上下文菜單(如果有的話)。上下文菜單是可選擇的。您用上下文菜單顯示與當(dāng)前屏幕相關(guān)的操作。WatchKit 在內(nèi)容之上顯示菜單,如圖 11-1。
圖 11-1 一個包含三個項目的上下文菜單
http://wiki.jikexueyuan.com/project/apple-watch-programming-guide/images/context_menu_2x.png" alt="" />
上下文菜單可以顯示多達 4 個動作(action)。每個動作由一個標(biāo)題和一張圖片表示。點擊某個動作的圖片會關(guān)閉菜單并執(zhí)行相應(yīng)的方法。點擊屏幕上其他的地方只能關(guān)閉菜單。
每個菜單項包含一個可點擊區(qū)域和一個標(biāo)題。可點擊區(qū)域包括圓形背景,頂部是您所提供的圖片。這張圖片必須是模板圖片,其 alpha 通道決定了繪制在背景頂部的形狀。圖片的不透明部分顯示為黑色,全部或者部分半透明可透出背景顏色。
您所提供的模板圖片應(yīng)當(dāng)比它們所在的圓形背景要小一點。關(guān)于菜單圖片的尺寸和創(chuàng)建圖片指南的更多信息,請參考 Apple Watch Human Interface Guidelines。
您可以在設(shè)計時配置界面控制器的上下文菜單,但是也可以在運行時添加和移除菜單項。在設(shè)計時,編輯 storyboard 包括您想在指定的界面控制器上顯示的菜單項。當(dāng)之后初始化界面控制器的時候,您可以添加菜單項來補充在 storyboard 中所創(chuàng)建的。通過代碼創(chuàng)建的菜單項也可以刪除。不管您是在 storyboard 中拖入菜單項還是通過代碼添加,菜單中的菜單項不能超過 4 個。
在界面控制器中添加上下文菜單
- (IBAction)doMenuItemAction
想要在運行時添加菜單項,調(diào)用界面控制器對象的 addMenuItemWithImage:title:action: 或者 addMenuItemWithImageNamed:title:action: 方法。您指定的菜單項被附加到 storyboard 文件的菜單中。通過編程方式一直附屬于菜單直到你明確移除它們或者界面控制器被銷毀。
當(dāng)用戶點擊菜單項時,WatchKit 關(guān)閉菜單并調(diào)用相關(guān)的動作方法。您可以在界面控制器中通過下面的語法來定義動作方法:
// SWIFT
@IBAction func doMenuAction() {
// Handle menu action.
}
// OBJECTIVE-C
- (IBAction)doMenuItemAction {
// Handle menu action.
}
如果要求使用任何狀態(tài)信息來執(zhí)行操作,那您需要在界面控制器中存儲并保持這些信息。舉個例子來說,如果一個動作依賴于表的當(dāng)前選中行,您的界面控制器必須包含一個變量來跟蹤當(dāng)前選中行。如果您需要用戶點擊菜單動作之后的更多信息,那動作方法必須顯示一個模態(tài)界面控制器。