UISegmentedControl.enabled = NO不会变暗

时间:2011-08-13 18:45:32

标签: ios cocoa-touch uisegmentedcontrol

我的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“启用”复选框控制器两个属性:enableddimmed。但是我找不到这个dimmed属性是什么?

我错过了什么?

这是在4.3 iPad模拟器中。

(请注意,我说的是整个控件,而不是它的各个部分)。

编辑:我进一步调查了一下,我发现禁用IB中的分段控件也会将其alpha属性设置为0.5。

添加时:

self.segmentedControl.alpha = 0.5; // or 1.0 if enabled

我的应用现在似乎表现正常。

我是否认为设置enabled属性也应该关注屏幕外观?

2 个答案:

答案 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中修复的错误。