Ios UISegmentedControl.enabled=NO不';别把它调暗

Ios UISegmentedControl.enabled=NO不';别把它调暗,ios,cocoa-touch,uisegmentedcontrol,Ios,Cocoa Touch,Uisegmentedcontrol,在我的popover中的ui视图中有一个ui分段控件,我想在某些情况下禁用它。分段控件由Interface Builder在nib文件中设置。已检查其IB“已启用”支票簿 为了禁用它,我写道: self.segmentedControl.enabled = NO; // or YES when I want it enabled 这在一定程度上可以使分段控件对触摸事件不作出反应 但是,没有任何图形反馈。我希望分段控件在禁用时变暗(变灰)。我试图将其突出显示的属性也设置为否,但没有效果 这应该

在我的popover中的
ui视图
中有一个
ui分段控件
,我想在某些情况下禁用它。分段控件由Interface Builder在nib文件中设置。已检查其IB“已启用”支票簿

为了禁用它,我写道:

self.segmentedControl.enabled = NO;  // or YES when I want it enabled
这在一定程度上可以使分段控件对触摸事件不作出反应

但是,没有任何图形反馈。我希望分段控件在禁用时变暗(变灰)。我试图将其
突出显示的
属性也设置为
,但没有效果

这应该是可能的,因为使用Interface Builder禁用
UISegmentedControl
会产生我想要的调暗效果

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

self.segmentedControl.enabled = YES;
不会使其启用:即使它将再次开始接受触摸事件,它仍将保持暗显

这就好像IB“enabled”复选框包含两个属性:
enabled
变暗
。但是我找不到的
暗显的
属性是什么

我错过了什么

这是在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];
}

用于(int index=0;index我遇到了完全相同的问题,有一个有趣的转折点。在运行iOS 4.3的iPad上,界面的行为与您描述的一样。但是,在运行iOS 5.0的iPad上,分段控件确实变暗了。因此,我的假设是,这是苹果在iOS 5中修复的一个错误。

您想过更改s的alpha吗分段控件?哈哈,你在我之前就考虑过了!我不认为
enabled
属性应该考虑屏幕的外观。你应该决定屏幕上会发生什么。只要我记得,就禁用一个用于使其变暗的按钮。谢谢你的主意。我发现这比简单地设置分段控件更麻烦的alpha属性…这有点复杂,但我想这取决于你想要的“正确程度:)哈哈!有趣的观察结果。谢谢。所以苹果同意我的观点,禁用控件也应该注意屏幕外观。