大佬教程收集整理的这篇文章主要介绍了swift – 使用Sprite Kit的辅助功能(Voice Over),大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
现在我在我的SKScene中覆盖了accessibilityElementATindex,accessibilityElementCount和indexOfAccessibilityElement.
他们返回一组可访问的元素:
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) } }
其中piece是SKSpriteNode的子类,并定义了getAccessibilityFrame:
func getAccessibilityFrame() -> CGRect { return parentView!.convertRect(frame,toView: nil) }
现在,一个(尺寸错误的)辅助功能元素似乎出现在屏幕上错误的地方.
有人能指出我正确的方向吗?
非常感谢
编辑:
我已经尝试了一个hack-ish工作,将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) }
按钮放置正确,但可访问性根本无法正常工作.似乎有些东西阻止它起作用.
// Add the following code to a scene where you want to make the SKNode variable named “leave” an accessible button // leave must already be initialized and added as a child of the scene,or a child of other SKNodes in the scene // screenHeight must already be defined as the height of the device screen,in points // Accessibility private var accessibleElements: [UIAccessibilityElement] = [] private func nodeToDevicePointsFrame(node: SKNodE) -> CGRect { // first convert from frame in SKNode to frame in SKScene's coordinates var sceneFrame = node.frame sceneFrame.origin = node.scene!.convertPoint(node.frame.origin,fromNode: node.parent!) // convert frame from SKScene coordinates to device points // sprite kit scene origin is in lower left,accessibility device screen origin is at upper left // assumes scene is initialized using SKScenescaleMode.Fill using dimensions same as device points var deviceFrame = sceneFrame deviceFrame.origin.y = CGFloat(screenHeight-1) - (sceneFrame.origin.y + sceneFrame.size.height) return deviceFrame } private func initAccessibility() { if accessibleElements.count == 0 { let accessibleLeave = UIAccessibilityElement(accessibilityContainer: self.view!) accessibleLeave.accessibilityFrame = nodeToDevicePointsFrame(leavE) accessibleLeave.accessibilityTraits = UIAccessibilityTraitButton accessibleLeave.accessibilityLabel = “leave” // the accessible name of the button accessibleElements.append(accessibleLeavE) } } override func didMoveToView(view: SKView) { self.isAccessibilityElement = false leave.isAccessibilityElement = true } override func willMoveFromView(view: SKView) { accessibleElements = [] } override func accessibilityElementCount() -> Int { initAccessibility() return accessibleElements.count } override func accessibilityElementATindex(index: int) -> AnyObject? { initAccessibility() if (index < accessibleElements.count) { return accessibleElements[index] as AnyObject } else { return nil } } override func indexOfAccessibilityElement(element: AnyObject) -> Int { initAccessibility() return accessibleElements.indexOf(element as! UIAccessibilityElement)! }
以上是大佬教程为你收集整理的swift – 使用Sprite Kit的辅助功能(Voice Over)全部内容,希望文章能够帮你解决swift – 使用Sprite Kit的辅助功能(Voice Over)所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。