UIAccessibility -Voice over not for an NSMutableAttributedString
问题描述:
我有一个文本“用户可以在这里进行更改'。”这里的字母是可点击的,并点击它。[检查图像] [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)
在此先感谢。
答
东西,让独立地可调焦的视图通过解说:
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')
此代码片段不够,缺少大量上下文信息。什么是footerVw? VoiceOver是否有任何这种观点受到关注?等。 – ChrisCM
是它的重点。它专注于整个标签(包括“这里”)。我希望它能够单独聚焦并阅读 – Mahesh
您应该创建两个单独的UILabel(或者可能是UILabel和UIButton),并对它们进行类似的设计并将它们排列在一起。 – ChrisCM