ios - UISegmentedControl.enabled = NO 不会使它变暗

标签 ios cocoa-touch uisegmentedcontrol

我在弹出窗口的 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 的两个属性:enableddimmed。但是我找不到的这个 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/

相关文章:

ios - 向iOS App添加大量动态格式化文本

ios - 使用 UIAlertController 阻塞循环

iphone - 从其 contentViewController 中关闭 UIPopoverController?

iphone - 如何在 iPhone 应用程序内调用电话?

xcode - 如何切换表格 View 中显示的数据

ios - UIPanGestureRecognizer 冲突

ios - 需要使用 Swift 在 UITableView 中的每一行之后显示部分

ios - 检查 UILabel 中的截断 - iOS、Swift

ios - 如何使用userDefaults在Swift3中保存UISegmentedControl的状态

ios - TableView 顶部的分段控件,但不在标题 View 中