Accessibility (Voice Over) mit Sprite Kit
Ich versuche, die Unterstützung für Voice Over in einem Puzzlespiel mit festem Brett hinzuzufügen. Allerdings habe ich Probleme, @ zu bekommUIAccessibilityElements
um aufzutauchen.
Right now I'm overridingaccessibilityElementAtIndex
, accessibilityElementCount
undindexOfAccessibilityElement
in meiner SKScene.
Sie geben ein Array von Elementen zurück, auf die zugegriffen werden kann:
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)
}
}
Wo Stück ist eine Unterklasse vonSKSpriteNode
undgetAccessibilityFrame
ist definiert
func getAccessibilityFrame() -> CGRect
{
return parentView!.convertRect(frame, toView: nil)
}
Right now one (falsch dimensioniert)accessibility
as @ -Element scheint an der falschen Stelle auf dem Bildschirm zu erscheinen.
Könnte mich jemand in die richtige Richtung weisen?
Danke vielmal
BEARBEITEN
Ich habe versucht, ein Hack-ish zu umgehen, indem ich ein UIView über dem SKView mit UIButton-Elementen an der gleichen Stelle platziert habe wie die SKSpriteNodes. Die Barrierefreiheit will jedoch immer noch nicht funktionieren. Die Ansicht wird als solche geladen:
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)
}
Die Schaltflächen sind korrekt platziert, die Eingabehilfen funktionieren jedoch überhaupt nicht. Etwas scheint zu verhindern, dass es funktioniert.