के लिए कस्टम फ़ोकस इंजन व्यवहार अनुभागों के साथ मैं एक मानक UICollectionView
का उपयोग करता हूं। मेरी कोशिकाएं ग्रिड की तरह रखी जाती हैं। किसी चयनित दिशा में अगला सेल सही ढंग से केंद्रित होता है यदि उपयोगकर्ता ऐप्पल टीवी रिमोट के साथ फोकस करता है। लेकिन अगर ग्रिड में "अंतर" है, तो डिफ़ॉल्ट फोकस इंजन अनुभागों पर कूदता है। यह एक सेल पर ध्यान केंद्रित करने के लिए करता है जो कई वर्गों को दूर कर सकता है लेकिन एक ही कॉलम में है।UICollectionView
सरल उदाहरण: 3 अनुभाग हैं। पहले खंड में 3 कोशिकाएं हैं। दूसरे में 2 कोशिकाएं हैं और आखिरी में 3 कोशिकाएं हैं। निम्न छवि देखें:
हरी सेल केंद्रित है और उपयोगकर्ता नीचे की दिशा को छूती है तो, पीले सेल ध्यान केंद्रित हो जाता है और खंड दो फोकस इंजन द्वारा छोड़ी गई है।
मैं इसे मजबूर करना चाहता हूं कि कोई भी वर्ग कूद नहीं सकता है। तो पीले रंग के सेल पर ध्यान केंद्रित करने के बजाय मैं नीले रंग के सेल पर ध्यान केंद्रित करना चाहता हूं।
मैंने सीखा कि ऐप्पल टीवी फोकस इंजन आंतरिक रूप से ग्रिड सिस्टम की तरह काम करता है और वर्णित व्यवहार डिफ़ॉल्ट है। अन्य आंदोलनों (उदा। विकर्ण) की अनुमति देने के लिए हमें अदृश्य UIFocusGuide
एस रखकर फोकस इंजन की सहायता करने की आवश्यकता है जो फोकस इंजन को preferredFocusedView
पर रीडायरेक्ट कर सकता है।
तो निम्न छवि में UICollectionView
अनुभाग की खाली जगह में एक अदृश्य लाल फोकस गाइड रखा गया है जो वांछित नीले रंग के सेल को नीचे फोकस करेगा। मुझे लगता है कि थियोरी में यह सही समाधान होगा।
लेकिन यह कैसे मैं UICollectionView
वर्गों के सभी खाली स्थान को UIFocusGuide
रों जोड़ना होगा? मैंने कई चीजों की कोशिश की है लेकिन कुछ भी काम नहीं किया है। शायद इसे एक सजावटी व्यू के रूप में जोड़ें लेकिन यह गलत लगता है। या अतिरिक्त कोशिकाओं के रूप में, लेकिन यह डेटा परत तोड़ता है और बाधाएं एंकर काम नहीं करते हैं।
क्या किसी को UIFocusGuide
एस UICollectionView
में जोड़ने का तरीका है?
एक ही समस्या पाया जा सकता है। क्या आपने संग्रह दृश्य को ओवरराइड करने का प्रयास किया है: canFocusItemAtIndexPath और पीले सेल में झूठी वापसी? –
नहीं, मैंने नहीं किया है। लेकिन मुझे लगता है कि थोड़ा गड़बड़ पैदा कर सकता है, क्योंकि कोशिकाओं को ध्यान केंद्रित किया जाना चाहिए। मैं अभी भी 'यूफोकसगाइड' तकनीक पसंद करता हूं। लेकिन अभी भी यह नहीं पता कि इसे कैसे प्राप्त किया जाए। मैंने सेब मंचों में भी पूछा: https://forums.developer.apple.com/message/93020 अगर आपको कोई समाधान मिला तो कृपया मुझे सूचित करें। –