Итак, у меня есть UICollectionView в UIViewController, который является одним из контроллеров корневого представления в панели вкладок. Я установил contentInset для UICollectionView, чтобы добавить ярлык в начало коллекции, и в этом случае это будет означать, что UILabel является частью коллекции, но не является частью headerView коллекции. Для достижения добавления UILabel к UICollectionView, я используюнеправильный порядок доступности в UICollectionView
collectionView.addSubview(theLabel)
и я перехожу голос поверх и запустить приложение. происходит то, что голос за кадром проходит через все UICollectionViewCells в правильном порядке вплоть до последнего CollectionViewCell, чтобы начать, затем переходит к метке, которая находится в верхней части коллекцииView, а затем переходит к tabBar. Я попытался ответить в этой Change order of read items with VoiceOver, но не везло, это решение было изменить порядок
self.accessibilityElements
к тому, как я хочу, кроме озвучивания на самом деле не следить за порядком в self.accsibilityElements и I я не уверен, что происходит, кто-нибудь сталкивался с теми же проблемами, что и приказ о доступности, который был надуман, потому что в UICollectionView использовался «addubView». IF (и я говорю, ЕСЛИ, потому что я не думаю, что кто-то добавил бы subView в collectionView таким образом), у кого есть какие-то мысли, пожалуйста, помогите мне здесь, застрял с этой ошибкой дольше всего.
Редактировать
class CollectionViewSubViewsAddedByTags: UICollectionView {
override func awakeFromNib() {
super.awakeFromNib()
}
var accessibilityElementsArray = [AnyObject]()
override var accessibilityElements: [AnyObject]?{
get{
return accessibilityElementsArray
}
set(newValue) {
super.accessibilityElements = newValue
}
}
override func accessibilityElementCount() -> Int {
return accessibilityElementsArray.count
}
override func accessibilityElementAtIndex(index: Int) -> AnyObject? {
return self.accessibilityElementsArray[index]
}
override func indexOfAccessibilityElement(element: AnyObject) -> Int {
return (accessibilityElementsArray.indexOf({ (element) -> Bool in
return true
}))!
}
override func didAddSubview(subview: UIView) {
super.didAddSubview(subview)
accessibilityElementsArray.append(subview)
accessibilityElementsArray.sortInPlace { $0.tag<($1.tag)}
}
override func willRemoveSubview(subview: UIView) {
super.willRemoveSubview(subview)
if let index = (accessibilityElementsArray.indexOf({ (element) -> Bool in
return true
})) {
accessibilityElementsArray.removeAtIndex(index)
}
}
}
Спасибо, Shabri
Почему бы вам не захотеть добавить подвид в коллекцию? –
мы могли бы пойти с 1 из этих 2 решений, у нас уже есть другое представление (разрешаем это viewviewView) внутри заголовка 1) добавьте theLabel внутри с рекламойView внутри заголовка для коллекцииView 2) Добавьте метку вверху из cpollectionView, предоставляя коллекцииView contentInset. Если мы пойдем первым путем, проблема возникает, когда мы находимся в ландшафте, мы не хотим видеть метку, скажем, я добавляю Label и рекламный просмотр в headerView с некоторыми константами, когда я скрываю Label в ландшафте, У меня возникли бы проблемы с ограничениями –
, в то же время я скрою панель навигации, когда мы находимся в верхней части коллекцииView, я также хочу сохранить тег о том, сколько прокрутил пользователь, поскольку после прокрутки пользователя после метки , Я покажу навигационную панель –