iOS Objective-C VoiceOver 更新可用的可访问元素

标签 ios objective-c voiceover

当到达 ViewController 时,我遇到了 VoiceOver 聚焦错误 View (不是第一个 View )的问题。我试图通过让 accessibilityElements 只包含我想要关注的 View 来解决它,并在 1 秒后清除它。

- (void)viewDidLoad
{
    [super viewDidLoad];
    self.view.accessibilityElements = @[self.firstView];
    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, NSEC_PER_SEC), dispatch_get_main_queue(), ^{
        self.view.accessibilityElements = nil;
    });
}

这是有效的,但是有一个缺点。焦点停留在第一个 View 上,这意味着左右滑动不会改变焦点。 “摆脱卡住”的唯一方法是点击另一个元素。

那么我如何通知系统 accessibilityElements 发生了更新?我希望滑动手势起作用。

最佳答案

当您将 accessibilityElements 设置为 nil 时,使用 UIAccessibilityScreenChangedNotification 通知更新将可访问性元素作为传入参数聚焦。

您将能够根据需要通知系统并使用滑动手势

关于iOS Objective-C VoiceOver 更新可用的可访问元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827178/

相关文章:

ios - 画外音无法正确读取电话号码

ios - SwiftUI GeometryReader 使其内容加载两次

iphone - 解析网站 API : How to query for objects incrementally?

ios - SKSpriteNode UserInteractionEnabled 不起作用

ios - 从 UIActivityViewController 关闭邮件后 UINavigationBar 消失

iphone - 基于服务器的数据库

ios - HTML 的 <br>、<h1>、<p> 标签无法与 UILabel 属性字符串一起正常工作

iphone - 是否可以检测 iPhone 上网页中的 VoiceOver 是否打开?

iphone - Xcode iPhone编程: Loading a jpg into a UIImageView from URL

jquery - 是否可以强制 Ios 浏览器焦点从输入转移到另一个元素?