0

我有一个文本“用户可以在这里进行更改'。”这里的字母是可点击的,并点击它。[检查图像] [1]UIAccessibility -Voice over not for an NSMutableAttributedString

默认的语音结束并不关注它,也不会读出它。

我怎样才能使它与语音重点,使其可点击并发音的名称。

为UI标签创建了一个扩展,并从NSRange计算属性文本框架。

 let attribute : [String : Any] = [NSForegroundColorAttributeName: Theme.getColor(forCode: "LinkBlue")] 
     let strToUse = contentForKey("String") 
     range = (footerText as NSString).range(of: strToUse) 
     let attributedString = NSMutableAttributedString(string: footerText) 
     if let textRange = range{ 
      attributedString.addAttributes(attribute, range:textRange) 
     } 
     footerVw.headerTitleLabel.attributedText = attributedString 
     footerVw.isUserInteractionEnabled = true 
     let tap = UITapGestureRecognizer(target: self, action: #selector(MyProfileViewController.showPage)) 
     footerVw.headerTitleLabel.addGestureRecognizer(tap) 

在此先感谢。

[1]:https://i.stack.imgur.com/uLQZF.png

+0

此代码片段不够,缺少大量上下文信息。什么是footerVw? VoiceOver是否有任何这种观点受到关注?等。 – ChrisCM

+0

是它的重点。它专注于整个标签(包括“这里”)。我希望它能够单独聚焦并阅读 – Mahesh

+0

您应该创建两个单独的UILabel(或者可能是UILabel和UIButton),并对它们进行类似的设计并将它们排列在一起。 – ChrisCM

回答

0

东西,让独立地可调焦的视图通过解说:

  • theView.isAccessibilityElement = true
  • allHeirarchicalParentViews.isAccessibilityElement = false

OR

  • hierarchicalParent.isAccessibilityElement = false
  • hierarchicalParent执行UIAccessibilityContainer协议。

如果您要详细说明如何实现此视图,特别是'用户现在可以进行更改'和'此处'之间的确切区别,我们可以提供更准确的答案。 EX:你处理什么类型的视图,什么类型的布局视图,包含这些不同位文本的视图是不同的,还是仅仅是属于的字符串,它活动的元素是什么,以及如何...等等?

我们假设我们只是想让整个UILabel表示可聚焦区域,并且整个事物都是活动的(场景1)。这个解决方案会有一个简单的问题。当VoiceOver激活accessibilityElements时,激活点是聚焦矩形的中间部分。因此,让我们假设您的UILabel上有一些类型的点击监听器,并且整个文本位都被VoiceOver焦点包含。您希望将accessibilityActivationPoint设置为“here”文本的位置。

yourUILabel.accessibilityActivationPoint = calculatePointOf(text:'Here') 
+0

为UI标签创建了一个扩展,并且计算NSRange中的attributesText框架。 – Mahesh

+0

你应该将它们分成两个不同的对象。一个信息丰富,一个活跃。或者让整个UILabel活跃起来。无论哪种方式。但是,答案就是对另一个问题的回答。 – ChrisCM

+0

该怎么做? – Mahesh

相关问题