You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为可下滑关闭的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 17:29:57