如何为可下滑关闭的Presented ViewController添加无障碍支持?
为下滑关闭的Presented ViewController添加无障碍支持
如果你的页面是用系统原生的UISheetPresentationController实现的下滑关闭,系统已经默认集成了无障碍支持,VoiceOver会自动提示用户可通过下滑手势关闭页面。但如果是自定义的下滑手势,需要手动做以下适配:
添加无障碍提示信息
给页面的主视图或下滑手势识别器设置accessibilityLabel,明确告知用户关闭方式,比如设置为"向下滑动可关闭此页面";同时可以用accessibilityHint补充细节,比如"双指向下滑动即可退出"。另外给视图添加.allowsDirectInteraction的无障碍特性,让VoiceOver用户可以直接触发下滑手势:view.accessibilityLabel = "向下滑动可关闭此页面" view.accessibilityHint = "双指向下滑动即可退出" view.accessibilityTraits.insert(.allowsDirectInteraction)同步手势的无障碍反馈
当自定义下滑手势触发关闭逻辑时,发送无障碍通知让VoiceOver用户感知状态变化:@objc func handleSwipeToClose(_ gesture: UISwipeGestureRecognizer) { UIAccessibility.post(notification: .announcement, argument: "正在关闭页面") dismiss(animated: true) { UIAccessibility.post(notification: .screenChanged, argument: nil) } }补充自定义无障碍动作
除了手势,给页面添加自定义无障碍动作,让VoiceOver用户可以通过转子(Rotor)选择“关闭页面”动作来触发关闭,适配不同操作习惯:override func viewDidLoad() { super.viewDidLoad() let closeAction = UIAccessibilityCustomAction( name: "关闭页面", target: self, selector: #selector(handleCloseAction) ) view.accessibilityCustomActions = [closeAction] } @objc func handleCloseAction() -> Bool { dismiss(animated: true) return true }验证适配效果
开启VoiceOver功能,测试页面进入时的提示、手势操作的反馈、自定义动作的触发是否正常,确保视觉障碍用户能顺畅完成关闭操作。
内容的提问来源于stack exchange,提问作者AppleDeveloper
相关产品推荐
相关产品推荐

