UISegmentedControl.enabled = NO不会变暗

Jea*_*uys 5 cocoa-touch uisegmentedcontrol ios

我有一个UISegmentedControlUIView我的popover中,我想在某些情况下禁用.在nib文件中使用Interface Builder设置分段控件.检查其IB"已启用"支票簿.

要禁用它,我写道:

self.segmentedControl.enabled = NO;  // or YES when I want it enabled
Run Code Online (Sandbox Code Playgroud)

这在某种程度上起作用,从那里分段控制不会对触摸事件做出反应.

但是,没有任何图形反馈.我希望分段控件在禁用时变暗(灰色).我试图将其highlighted属性设置NO为也没有效果.

这应该是可能的,因为禁用UISegmentedControl接口生成器产生我想要的调光效果.

但是,如果我这样做,我的代码就无法重新启用它:

self.segmentedControl.enabled = YES;
Run Code Online (Sandbox Code Playgroud)

不会启用它:即使它会再次开始接受触摸事件,它也会保持灰色.

这就好像IB"启用"复选框控制器两个属性:enableddimmed.但是dimmed我找不到这个属性是什么?

我错过了什么?

这是在4.3 iPad模拟器中.

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

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

添加时:

self.segmentedControl.alpha = 0.5; // or 1.0 if enabled
Run Code Online (Sandbox Code Playgroud)

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

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

jow*_*wie 8

我发现这适用于每个细分市场:

[self.segmentedControl setEnabled:NO forSegmentAtIndex:0];
Run Code Online (Sandbox Code Playgroud)

效果很微妙,但确实会变灰.要做所有细分:

for(int index=0; index<self.segmentedControl.numberOfSegments; index++)
{
    [self.segmentedControl setEnabled:NO forSegmentAtIndex:index];
}
Run Code Online (Sandbox Code Playgroud)


小智 5

我遇到了完全相同的问题,但有一个有趣的转折。该界面的行为与您在运行iOS 4.3的iPad上的描述相同。但是,分段控件在运行iOS 5.0的iPad中确实变暗。因此,我认为这是Apple在iOS 5中修复的错误。