2012-11-19 32 views
11

के एक पृष्ठ को देख सकते हैं एक कस्टम UILayout का उपयोग कर प्रदर्शन किया।आवाज ही तो मैं UICollectionViewCells का एक सेट के साथ एक UICollectionView एक uicollectionview

मैं सभी UICollectionViewCells लगभग ठीक कैसे वे iOS पर फ़ोटो ऐप से रखी हैं के रूप में ही बाहर रखना UILayout कॉन्फ़िगर कर दिया है।

समस्या यह है कि ऐसा लगता है कि वॉयस ओवर चालू हो गया है, और उपयोगकर्ता स्वाइप का उपयोग करके यूआईसीओलेक्शन व्यूकेल्स के माध्यम से आगे बढ़ रहा है, जब उपयोगकर्ता पृष्ठ पर अंतिम दृश्य कक्ष में जाता है, और अगले सेल पर आगे स्वाइप करने का प्रयास करता है , यह बस बंद हो जाता है।

मुझे पता है कि UITableView में कोशिकाओं बस आगे बढ़ते रहो जाएगा, और तालिका दृश्य स्वचालित रूप से स्क्रॉल करेगा।

क्या कोई इस व्यवहार को प्राप्त करने के बारे में जानता है?

उत्तर

9

घंटे और सिर दर्द के घंटे के बाद, समाधान बहुत आसान था। किसी और को एक समान समस्या भर आता है, तो यह मैं क्या किया है:

UICollectionViewCell के उपवर्ग है कि आप अपने CollectionView के लिए उपयोग कर रहे हैं में, accessibilityElementDidBecomeFocused ओवरराइड और इस तरह इसे लागू:

- (void)accessibilityElementDidBecomeFocused 
{ 
    UICollectionView *collectionView = (UICollectionView *)self.superview; 
    [collectionView scrollToItemAtIndexPath:[collectionView indexPathForCell:self] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally|UICollectionViewScrollPositionCenteredVertically animated:NO]; 
    UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, nil); 
} 
1

स्टीफन जवाब काम किया मेरे लिए! धन्यवाद।

मैं जोड़ने के लिए है कि यह केवल iOS6 को प्रभावित करने लगता है चाहते हैं; ऐसा लगता है कि उन्होंने इसे आईओएस 7 में तय किया है।

- (void)accessibilityElementDidBecomeFocused {  
    UICollectionView *collectionView = (UICollectionView *)self.superview; 
    [collectionView scrollToItemAtIndexPath:[collectionView indexPathForCell:self] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally|UICollectionViewScrollPositionCenteredVertically animated:NO]; 
    UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self); 
} 
15

इस उत्तर मेरे लिए काम किया है, भी: तो जैसे -

इसके अलावा, आप UIAccessibilityPostNotification करने के बजाय स्वयं शून्य पारित करके थोड़ा तेज और क्लीनर स्क्रॉल कर सकते हैं। धन्यवाद!

एक अन्य कॉल आप इस काम करने के लिए प्राप्त करने के लिए सक्षम होना चाहिए नहीं है। अन्यथा आपकी विधि (शून्य) अभिगम्यताElementDidBecomeFocused कभी कॉल नहीं किया जाएगा। आपको ऑब्जेक्ट सेल पर पहुंच को सक्षम करना होगा।

  1. विकल्प 1: व्यू कंट्रोलर में, सेल इंस्टेंस को एक्सेसिबिलिटी सेट करने के लिए सेट करें।

    Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:kCellID forIndexPath:indexPath]; 
    [cell setIsAccessibilityElement:YES]; 
    
  2. विकल्प 2:

    - (BOOL)isAccessibilityElement 
    { 
        return YES; 
    } 
    
    - (NSString *)accessibilityLabel { 
        return self.label.text; 
    } 
    
    - (UIAccessibilityTraits)accessibilityTraits { 
        return UIAccessibilityTraitStaticText; // Or some other trait that fits better 
    } 
    
    - (void)accessibilityElementDidBecomeFocused 
    { 
        UICollectionView *collectionView = (UICollectionView *)self.superview; 
        [collectionView scrollToItemAtIndexPath:[collectionView indexPathForCell:self] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally|UICollectionViewScrollPositionCenteredVertically animated:NO]; 
        UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self); 
    } 
    
0

यह मेरे लिए काम नहीं किया है, लेकिन मैं यहाँ सिर्फ पोस्ट Kgreenek & स्टीफन की स्विफ्ट संस्करण: सेल वस्तु में पहुंच इंटरफ़ेस को लागू अगर कोई इसे कॉपी करने के लिए जल्दी से पेस्ट करना चाहता है तो यह जांचने के लिए कि क्या यह उसके मुद्दों को हल करता है।

override func accessibilityElementDidBecomeFocused() { 
    if let superview = self.superview as? UICollectionView, let indexPath = superview .indexPath(for: self) { 
      superview.scrollToItem(at: indexPath, at: [.centeredVertically, .centeredHorizontally], animated: false) 
      UIAccessibilityPostNotification(UIAccessibilityLayoutChangedNotification, self) 
    } 
} 

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^