我正在開發蘋果電視應用程序。在我的應用程序中,我製作了一個具有收藏視圖的屏幕。在這種情況下,我能夠將焦點移至collection view cell,但無法將焦點移至collection view view cell中的按鈕,所以任何人都可以幫我解決這個問題嗎?如何在tvos應用程序中的collectionview單元中的按鈕上移動焦點?
如果有人知道這個答案,請給我一個答案。
我正在開發蘋果電視應用程序。在我的應用程序中,我製作了一個具有收藏視圖的屏幕。在這種情況下,我能夠將焦點移至collection view cell,但無法將焦點移至collection view view cell中的按鈕,所以任何人都可以幫我解決這個問題嗎?如何在tvos應用程序中的collectionview單元中的按鈕上移動焦點?
如果有人知道這個答案,請給我一個答案。
我能夠通過添加以下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。
它不像預期的那樣工作,首先它關注第一個按鈕,然後是第二個按鈕,然後是最後一個單元......這是不正確的用戶體驗。 – mgyky
我覺得這個網頁會指導你實現你想要的東西。 https://developer.apple.com/library/content/documentation/General/Conceptual/AppleTV_PG/WorkingwiththeAppleTVRemote.html#//apple_ref/doc/uid/TP40015241-CH5-SW4
它很好地解釋了焦點引擎如何決定哪個對象應該獲得下一個焦點。下面是很好的解釋步步在above link.
下面是一個例子示出了焦點如何可能被確定:
您必須重寫UIView或UIViewController的preferredFoucsedView屬性。
override weak var preferredFocusedView: UIView? {
if someCondition {
return theViewYouWant
} else {
return defaultView
}
}
由於Slayter's答案
你是什麼意思? – Lion
焦點意味着在焦點移動的任何時候都可以點擊按鈕。 –
更好的是你可以使用集合視圖單元格的交互。 –