voice over can only see a page of a uicollectionview

uicollectionview focus cell
uitableviewcell accessibility
uicollectionview in uitableviewcell accessibility
ios nested accessibility elements
uiaccessibilitycontainer uicollectionview
accessibilityelements

So i have a UICollectionView with a set of UICollectionViewCells displayed using a custom UILayout.

I've configured the UILayout to lay out all the UICollectionViewCells almost exactly the same as how they are laid out in the photos app on ios.

The problem is, it seems when voice over is turned on, and the user is traversing through the UICollectionViewCells using swipe, when the user gets to the last visible cell on the page, and tries to swipe forward to the next cell, it simply stops.

I know that in UITableView the cells will just keep moving forward, and the table view will scroll down automatically.

Does anyone know how to get this behaviour?


This answer worked for me, too. Thanks!

There is one other call you must have enabled to get this to work. Otherwise your method (void)accessibilityElementDidBecomeFocused will never get called. You must enable accessibility on the object Cell.

  1. Option 1: In ViewController, set the cell instance to have accessibility.

    Cell *cell = [cv dequeueReusableCellWithReuseIdentifier:kCellID forIndexPath:indexPath];
    [cell setIsAccessibilityElement:YES];
    
  2. Option 2: Implement the accessibility interface in the cell object:

    - (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);
    }
    

VoiceOver can't read rest of collection view cells beyond the , I know that in UITableView the cells will just keep moving forward, and the table view will scroll down automatically. Does anyone know how to get this behaviour​? Questions: There is a method to get a cell by indexPath (UICollectionView cellForItemAtIndexPath:). But I can”t find a method to get one of the supplementary views like a header or footer, after it has been created.


After hours and hours of headache, the solution was really simple. If anyone else comes across a similar problem, this is what i did:

In the subclass of UICollectionViewCell that you are using for your CollectionView, override accessibilityElementDidBecomeFocused and implement it like this:

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

Make nested collection views with large cells accessible with , When I set the VoiceOver accessibility feature for the collection view controller. override dequeueReusableCell(withReuseIdentifier: "image", for: indexPath) cell. Issue: The VoiceOver in collection view can only focus on initialled cells. Thus, in a sense, the layout object is like another data source, only providing visual information instead of item data. You normally specify a layout object when creating a collection view but you can also change the layout of a collection view dynamically.


Stephen's answer worked for me! Thanks.

I want to add that this seems to affect only iOS6; it looks like they fixed it in iOS7.

Also, you can make the scrolling slightly faster and cleaner by passing self instead of nil to UIAccessibilityPostNotification -- like so:

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

How to let UICollectionView focus on to the first visible , In the App that I am currently working on, there is a nested collection view setup. Voice Over: When I reach the last item in the first child-collection view (i.e., the only seems to occur when only one cell (of the outer collection view) is visible  Question Description. My app has done: [[UIView appearance] setTintColor:[UIColor whiteColor]]; And here is what I have when on:. and off:. I need to make UISwitch border visible like in Settings.app:


This is how you would do it in Swift:

override func accessibilityElementDidBecomeFocused() {
    guard let collectionView = superview as? UICollectionView,
        let indexPath = collectionView.indexPath(for: self) else {
        return
    }

    collectionView.scrollToItem(at: indexPath, at: .left, animated: true)
    UIAccessibility.post(notification: .layoutChanged, argument: nil)
}

Lessons in iOS Voiceover Accessibility - Aaptiv Engineering, There is a UICollectionView in ViewController, and it's scroll direction is Inaccessible Behavior When I put VoiceOver focus on navigation title Then to the first cell of the collection view, instead of the current visible cell. The UICollectionView is a newer component that works much like a TableView control but instead of having one uniform column, you can have many columns and rows and customize each cell.


CollectionView Cell inside UITableView is not scrolling horizontally , Right: Redesigned home screen, where voiceover only said section felt terrible​; for many of our blind users, Aaptiv is a critical part of their For our first attempt at a fix, we approached our tableViewCell containing a collectionView to “see” the next object on the page, and double-tapping to “click” on it. Thinkific CEO Greg Smith shares tips on creating voice over slides for your online course, followed by a video tutorial on how to upload your presentation sl


rdar://20419462: VoiceOver incorrectly focuses the first cell in a , The accessibility focus is not moving to the next cell. Voice over is working fine only for visible cells in collectionView. don't hesitate to take a look at it to perfectly implement your collection view for the VoiceOver users. How to Do a Voice Over. Voice overs are ubiquitous in videos of all kinds. Simply put, a voice over is just someone speaking while a video is playing, though the person is usually not directly in the scene.


Grouping elements for better accessibility on iOS, Summary: I have a collection view that I want to be an accessibility element with the adjustable trait. Its accessibilityLabel is intended to give a  Re: scrolling not working in UICollectionView Level 1 (0 points) The NSAppTransportSecurity key May 31, 2017 6:29 AM ( in response to bharanimani )