如何批量禁用Box容器内包含的所有radio buttons
实现方法
Box组件本身没有自带批量禁用内部所有元素的属性,不用靠isHidden隐藏控件实现需求,直接遍历Box下的子元素把单选按钮设为禁用就行。
- 给所有放在Box里的radio buttons绑定同一个选中响应事件,当用户点选任意一个按钮触发选中回调时,执行遍历逻辑即可:
// 遍历Box容器的所有子视图 for subView in box.subviews { // 如果你用的是自定义RadioButton控件,把下面的UIButton替换成你实际使用的单选按钮类名 guard let radioButton = subView as? UIButton else { continue } radioButton.isEnabled = false }
- 如果不想写遍历逻辑,也可以直接把Box的
isUserInteractionEnabled属性设为false,这样整个Box内的所有控件都不会响应点击事件。但要注意这种方式不会触发单选按钮自带的禁用态视觉样式,用户看不到控件已被锁定的提示,交互体验不如逐个设置isEnabled的方案,优先选择遍历的写法。
你之前找到的box.isHidden = true作用是直接把整个容器隐藏,和你需要的保留展示、禁止交互的需求不匹配,不适合这个场景。
内容的提问来源于stack exchange,提问作者techno
相关产品推荐
相关产品推荐

