我的popover UISegmentedControl
中有一个UIView
我希望在某些情况下禁用它。在nib文件中使用Interface Builder设置分段控件。检查其IB“已启用”支票簿。
要禁用它,我写道:
self.segmentedControl.enabled = NO; // or YES when I want it enabled
在某种程度上,分段控件不会对触摸事件做出反应。
但是,没有任何图形反馈。我希望分段控件在禁用时变暗(灰色)。我尝试将其highlighted
属性设置为NO
,但没有效果。
这应该是可行的,因为使用Interface Builder禁用UISegmentedControl
会产生我想要的调光效果。
但是,如果我这样做,我的代码就无法重新启用它:
self.segmentedControl.enabled = YES;
不会启用它:即使它会再次开始接受触摸事件,它也会保持灰色。
就好像IB“启用”复选框控制器两个属性:enabled
和dimmed
。但是我找不到这个dimmed
属性是什么?
我错过了什么?
这是在4.3 iPad模拟器中。
(请注意,我说的是整个控件,而不是它的各个部分)。
编辑:我进一步调查了一下,我发现禁用IB中的分段控件也会将其alpha
属性设置为0.5。
添加时:
self.segmentedControl.alpha = 0.5; // or 1.0 if enabled
我的应用现在似乎表现正常。
我是否认为设置enabled
属性也应该关注屏幕外观?
答案 0 :(得分:7)
我发现这适用于每个细分市场:
[self.segmentedControl setEnabled:NO forSegmentAtIndex:0];
效果很微妙,但它确实变灰了。要做所有细分:
for(int index=0; index<self.segmentedControl.numberOfSegments; index++)
{
[self.segmentedControl setEnabled:NO forSegmentAtIndex:index];
}
答案 1 :(得分:4)
我遇到了完全相同的问题,有一个有趣的转折。界面的行为与您在运行iOS 4.3的iPad上描述的一样。但是,分段控件在运行iOS 5.0的iPad中变暗。因此,我的假设是,这是Apple在iOS 5中修复的错误。