В данный момент я работаю над пользовательским просмотром.
Мне нужно добиться поведения VoiceOver, как в стандартном UICollectioView. Когда при переводе фокуса с элемента, находящегося за пределами иерархии моего пользовательского представления, на элемент, находящийся в иерархии, VoitserOver считывает accessibilityLabel пользовательского представления, а затем accessibilityLabel выбранного представления
@interface FBMinimizedPlayerControlPanelView ()
@property (nonatomic, strong) ImageView *artworkView;
@property (nonatomic, strong) UILabel *titleLabel;
@property (nonatomic, strong) UILabel *subtitleLabel;
@property (nonatomic, strong) ImageContainer *togglePlayPauseButton;
@end
@implementation FBMinimizedPlayerControlPanelView
- (instancetype)initWithFrame:(CGRect)frame {
self = [super initWithFrame:frame];
if (self) {
[self setUp];
}
return self;
}
- (void)setUp {
// self.isAccessibilityElement = YES;
self.accessibilityLabel = @"Miniplayer.";
self.accessibilityHint = @"Double tap to expand the miniplayer.";
// self.accessibilityElementsHidden = YES;
//set up code
[self.togglePlayPauseButton configureWithAccessibilityLabel:@"Play" forState:BEToggleButtonStateSelected];
[self.togglePlayPauseButton configureWithAccessibilityLabel:@"Pause" forState:BEToggleButtonStateNormal];
}
- (nullable NSArray *)accessibilityElements {
return @[self.togglePlayPauseButton];
}
@end
А теперь, когда я включаю VoiceOver, кнопка паузы / воспроизведения только для чтения, но я хочу, чтобы поведение было таким же, как в UICollectionView, где в начале читается accessibilityLabel из collectionView, а затем элемент accessibilityLabel.
Например:
collectionView accessibilityLabel: "collectionView",
метка контента ячейки accessibilityLabel: "метка контента ячейки",
В ситуации, которую я описал выше, VoiceOver выделяется красным цветом: «collectionView, метка содержимого ячейки» (только если предыдущий фокус не был подпредставлением из collectionView);