2016-11-25 53 views
0

我正在開發蘋果電視應用程序。在我的應用程序中,我製作了一個具有收藏視圖的屏幕。在這種情況下,我能夠將焦點移至collection view cell,但無法將焦點移至collection view view cell中的按鈕,所以任何人都可以幫我解決這個問題嗎?如何在tvos應用程序中的collectionview單元中的按鈕上移動焦點?

如果有人知道這個答案,請給我一個答案。

+0

你是什麼意思? – Lion

+0

焦點意味着在焦點移動的任何時候都可以點擊按鈕。 –

+0

更好的是你可以使用集合視圖單元格的交互。 –

回答

2

我能夠通過添加以下collectionViewCell子類中的方法來解決這個問題。

在CollectionViewCell子類

override var preferredFocusEnvironments: [UIFocusEnvironment]{ 
    // Condition 
} 
override func shouldUpdateFocus(in context: UIFocusUpdateContext) -> Bool { 
    // Condition 
} 
override func didUpdateFocus(in context: UIFocusUpdateContext, with coordinator: UIFocusAnimationCoordinator) { 
    // Condition 
} 

你可以看到更多在此鏈接: enter link description here

+0

它不像預期的那樣工作,首先它關注第一個按鈕,然後是第二個按鈕,然後是最後一個單元......這是不正確的用戶體驗。 – mgyky

1

我覺得這個網頁會指導你實現你想要的東西。 https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/WorkingwiththeAppleTVRemote.html#//apple_ref/doc/uid/TP40015241-CH5-SW4

它很好地解釋了焦點引擎如何決定哪個對象應該獲得下一個焦點。下面是很好的解釋步步在above link.

下面是一個例子示出了焦點如何可能被確定:

  1. 焦點引擎請求根窗口爲其preferredFocusedView, 它返回其根視圖控制器preferredFocusedView 目的。
  2. 根視圖控制器,一個選項卡視圖控制器,返回它的 選擇視圖控制器的preferredFocusedView對象。
  3. 選擇視圖控制器重寫其preferredFocusedView方法以返回特定的UIButton實例。
  4. UIButton實例返回self(默認值),並且是可調焦的,所以它被焦點引擎選爲下一個焦點視圖。

您必須重寫UIView或UIViewController的preferredFoucsedView屬性。

override weak var preferredFocusedView: UIView? { 
    if someCondition { 
     return theViewYouWant 
    } else { 
     return defaultView 
    } 
} 

由於Slayter's答案

相關問題