我有一个文字“用户可以在这里进行更改”。字母“here”是可点击的,并点击它。[检查图像] [1]
默认的配音不是专注于它而不是读出来。
如何使其专注于语音,使其可点击并发出名称。
为UI Label创建了一个扩展,并计算了NSRange中的attributionText帧。
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)
提前致谢。
答案 0 :(得分:1)
使VoiceOver可以独立调整视图的内容:
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')
答案 1 :(得分:0)
默认配音不集中精力也不朗读。
达到目标的一种好方法是将可变字符串包装在UITextView
内,其委托将允许打开任意数量的链接:您将无法达到目的一个UILabel
。
假设您正在使用UITableViewHeaderFooterView
,请尝试将此包装器添加到footerVw contentView
中。
我如何使它集中于配音,使其可单击并发音呢?
这是一个激活所选链接的 specific VoiceOver gesture :看看this answer,其中包含一个完整的示例,其中包括说明焦点和激活方式的示例。