我在弹出窗口的 UIView
中有一个 UISegmentedControl
,在某些情况下我想禁用它。分段控件使用 Interface Builder 在 nib 文件中设置。其 IB“已启用”支票簿已选中。
要禁用它,我写道:
self.segmentedControl.enabled = NO; // or YES when I want it enabled
从那里开始,分段控件不会对触摸事件使用react,这在一定程度上起作用。
但是,没有任何图形反馈。我希望分段控件在禁用时变暗(变灰)。我也尝试将其 highlighted
属性设置为 NO
,但没有任何效果。
这应该是可行的,因为使用 Interface Builder 禁用 UISegmentedControl
会产生我想要的调光效果。
但是,如果我这样做,我的代码就无法重新启用它:
self.segmentedControl.enabled = YES;
不会启用它:即使它会再次开始接受触摸事件,它也会保持灰色。
就好像 IB“启用”了复选框 Controller 的两个属性:enabled
和 dimmed
。但是我找不到的这个 dimmed
属性是什么?
我错过了什么?
这是在 4.3 iPad 模拟器中。
(请注意,我说的是整个控件,而不是它的各个部分)。
编辑:我进一步调查了一下,发现在 IB 中禁用分段控件也会将其 alpha
属性设置为 0.5。
添加时:
self.segmentedControl.alpha = 0.5; // or 1.0 if enabled
我的应用现在似乎运行正常。
我认为设置 enabled
属性也应该关注屏幕外观是否正确?
最佳答案
我发现这适用于每个分割市场:
[self.segmentedControl setEnabled:NO forSegmentAtIndex:0];
效果很微妙,但它确实变灰了。做所有段:
for(int index=0; index<self.segmentedControl.numberOfSegments; index++)
{
[self.segmentedControl setEnabled:NO forSegmentAtIndex:index];
}
关于ios - UISegmentedControl.enabled = NO 不会使它变暗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7052557/