我有一个UITextView,部分文字是可点击的。链接工作。当我在iPhone的设置中打开辅助功能并打开Voice over时,会读出textview的文本,但链接不起作用。启用textview的故事板上的辅助功能,并在辅助功能属性下选择链接,并且在打开语音时链接不起作用。我也尝试将isAccessbilityElement = true添加到textview,结果没有运气。
UITextView被添加到表格视图的自定义单元格中。
提前感谢您的建议。
答案 0 :(得分:1)
我没有解决方案。我还在找。
现在我在我的应用程序中使用UIWebview而不是UITextView。使用UIAccessiblity,UIWebview更有效。
答案 1 :(得分:1)
解决方案取决于您使用的 iOS 版本。对于 iOS 12。* 答案 https://stackoverflow.com/a/55144836/4600723 是正确的。
对于 iOS 13+,情况有点复杂,您需要在这里开箱即用。我发现设置 isEditable = true
并覆盖委托方法:
func textViewShouldBeginEditing(_ textView: UITextView) -> Bool {
false
}
(关闭结束)将提供您正在寻找的行为。
总的来说,从可访问性的角度来看,UITextView 确实有问题。
答案 2 :(得分:0)
您必须覆盖默认行为以选择UITextViews测试或您提供的链接。请参见此类UIAccessibilityElement
。希望这对您有帮助
答案 3 :(得分:0)
该问题涉及必须在UITextView中激活链接时使用的specific VoiceOver gesture。
我随后创建了一个包含代码片段的空白项目,以在myTextView
元素中获得2个URL:
class TextViewURLViewController: UIViewController, UITextViewDelegate {
@IBOutlet weak var myTextView: UITextView!
let myString = "Follow this developers guide if you already know the VoiceOver gestures."
let myDevURL = "https://a11y-guidelines.orange.com/mobile_EN/dev-ios.html"
let myGesturesURL = "https://a11y-guidelines.orange.com/mobile_EN/voiceover.html"
override func viewDidLoad() {
let attributedString = NSMutableAttributedString(string: myString)
attributedString.addAttribute(.link,
value: myDevURL,
range: NSRange(location: 12,
length: 17))
attributedString.addAttribute(.link,
value: myGesturesURL,
range: NSRange(location: 52,
length: 19))
myTextView.attributedText = attributedString
myTextView.font = UIFont(name: myTextView.font!.fontName,
size: 25.0)
}
func textView(_ textView: UITextView,
shouldInteractWith URL: URL,
in characterRange: NSRange,
interaction: UITextItemInteraction) -> Bool {
UIApplication.shared.open(URL, options: [:])
return false
}
}
按照下面的步骤激活链接:
links
项目。Open
操作。唯一需要记住的是双击并按住直到弹出窗口出现在链接上方。