Доступность (Voice Over) с набором Sprite
Я пытаюсь добавить поддержку доступности Voice Over в игре-головоломке с фиксированной доской. Тем не менее, у меня проблемы с получениемUIAccessibilityElements
показывать.
Прямо сейчас я переопределяюaccessibilityElementAtIndex
, accessibilityElementCount
а такжеindexOfAccessibilityElement
в моем SKScene.
Они возвращают массив доступных элементов как таковой:
func loadAccessibleElements()
{
self.isAccessibilityElement = false
let pieces = getAllPieces()
accessibleElements.removeAll(keepCapacity: false)
for piece in pieces
{
let element = UIAccessibilityElement(accessibilityContainer: self.usableView!)
element.accessibilityFrame = piece.getAccessibilityFrame()
element.accessibilityLabel = piece.getText()
element.accessibilityTraits = UIAccessibilityTraitButton
accessibleElements.append(element)
}
}
Где кусок является подклассомSKSpriteNode
а такжеgetAccessibilityFrame
определено:
func getAccessibilityFrame() -> CGRect
{
return parentView!.convertRect(frame, toView: nil)
}
Прямо сейчас один (неправильный размер)accessibility
Элемент, кажется, появляется на экране не в том месте.
Может ли кто-нибудь указать мне правильное направление?
Большое спасибо
РЕДАКТИРОВАТЬ:
Я попытался обойти эту проблему, разместив UIView поверх SKView с элементами UIButton в том же месте, что и узлы SKSpriteNodes. Тем не менее, доступность по-прежнему не хочет работать. Представление загружается как таковое:
func loadAccessibilityView()
{
view.isAccessibilityElement = false
view.accessibilityElementsHidden = false
skView.accessibilityElementsHidden = false
let accessibleSubview = UIView(frame: view.frame)
accessibleSubview.userInteractionEnabled = true
accessibleSubview.isAccessibilityElement = false
view.addSubview(accessibleSubview)
view.bringSubviewToFront(accessibleSubview)
let pieces = (skView.scene! as! GameScene).getAllPieces()
for piece in pieces
{
let pieceButton = UIButton(frame: piece.getAccessibilityFrame())
pieceButton.isAccessibilityElement = true
pieceButton.accessibilityElementsHidden = false
pieceButton.accessibilityTraits = UIAccessibilityTraitButton
pieceButton.setTitle(piece.getText(), forState: UIControlState.Normal)
pieceButton.setBackgroundImage(UIImage(named: "blue-button"), forState: UIControlState.Normal)
pieceButton.alpha = 0.2
pieceButton.accessibilityLabel = piece.getText()
pieceButton.accessibilityFrame = pieceButton.frame
pieceButton.addTarget(self, action: Selector("didTap:"), forControlEvents: UIControlEvents.TouchUpInside)
accessibleSubview.addSubview(pieceButton)
}
UIAccessibilityPostNotification(UIAccessibilityScreenChangedNotification, nil)
}
Кнопки расположены правильно, однако доступность просто не работает вообще. Кажется, что-то мешает этому работать.