我有一个文本“用户可以在这里进行更改”。“在这里”的字母是可点击的,点击它。[检查图像][1]
默认的旁白是不关注它,也不读出它。
我怎样才能使它集中于画外音,使其可点击并发音。
为UI标签创建了扩展名,Am正在从NSRange计算attributeText帧。
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
最佳答案
通过画外音使视图独立聚焦的内容:theView.isAccessibilityElement = true
allHeirarchicalParentViews.isAccessibilityElement = false
或者hierarchicalParent.isAccessibilityElement = false
hierarchicalParent
实现UIAccessibilityContainer
协议。
如果你想更详细地说明这个视图是如何实现的,特别是“用户现在可以进行更改”和“此处”之间的确切分隔是什么,我们可以提供一个更精确的答案。例句:你要处理的视图类型,布局视图的类型,包含这些不同文本位的视图是分开的,还是只是属性的字符串,什么元素是活动的,以及如何。。。等?
假设我们只希望整个UILabel表示可聚焦区域,并且整个东西都是活动的(场景1)。这个解决方案有一个简单的问题。当画外音激活可访问元素时,激活点位于聚焦矩形的中间。所以,假设您的UILabel上有某种类型的点击监听器,并且整个文本都包含在VoiceOver焦点中。您想将accessibilityActivationPoint
设置为“here”文本所在的位置。
yourUILabel.accessibilityActivationPoint = calculatePointOf(text:'Here')
关于ios - UIAccessibility-语音提示不适用于NSMutableAttributedString,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44270111/