Xcode Interface Builder中‘User Interaction Enabled’无障碍特性作用是什么?
关于Accessibility Inspector中「User Interaction Enabled」选项的作用
我来给你掰扯清楚这个选项到底影响啥——其实它核心就是控制辅助技术(比如VoiceOver)是否把这个元素当成可交互对象来对待,分两种情况说更清楚:
勾选「User Interaction Enabled」时的表现
- 对于有实际交互能力的控件(比如UIButton、UITextField):这个选项必须勾选,否则VoiceOver用户没法通过双击等手势触发它的交互逻辑(比如点击按钮、编辑输入框)。同时,它会被纳入VoiceOver的「可交互元素遍历队列」,用户用“下一个交互元素”的手势(比如三指滑动)时会优先选中它。
- 对于像静态UILabel这种本身没有交互逻辑的元素:虽然勾选后用户双击它不会有任何动作,但它依然会被当成可交互元素加入遍历队列。这就会导致VoiceOver用户在找可操作的按钮/输入框时,莫名其妙停下来读一个静态标签,反而干扰流畅性。
取消勾选「User Interaction Enabled」时的表现
- 不管元素本身有没有交互能力,它都会被标记为纯信息展示元素。VoiceOver依然会正常读取它的无障碍标签、描述,但不会允许用户激活它,也不会把它放进「可交互元素遍历队列」里。
- 对于你提到的静态标签场景,这其实是更合理的设置:用户在遍历可操作元素时不会被它打断,只有在正常浏览所有页面元素(包括非交互信息)时才会读到它,体验更顺畅。
额外提一句:这个选项和UIKit控件本身的isUserInteractionEnabled属性是联动的,但你也可以单独调整无障碍里的这个设置——不过一般建议保持两者一致,避免逻辑混乱。
内容的提问来源于stack exchange,提问作者Steve Harrison
相关产品推荐
相关产品推荐

