UISegmentedControl行为

关于iPhone上的UISegmentedControl类的快速问题。

希望有些人可能已经注意到,在具有2个段的默认状态下,即使用户点击当前选择的段,分段控件仍将切换。

我在应用程序中看到了UISegmentedControls否定了这种行为,并且在用户按下选定的段时不进行切换。 即,Apple的iTune Store应用程序。

是否有一种简单的方法来防止我忽略这种行为,或者我是否需要在valueChanged中写入一些逻辑?

我一直在尝试禁用当前选定的段并启用未选择的段,但这似乎改变了控件的外观,当我不想要它时。

有任何想法吗?

查看UISegmentedControl.h头文件(一种简单的方法是在XCode中双击“UISegmentedControl”,同时按住Command)。

在那里,您将在_segmentedControlFlags结构中看到许多项目。 如果你在UISegmentedControl上创建一个类别,你可以操作任何这些元素 – 包括dontAlwaysToggleForTwoSegments ,正如你可能猜到的那样,你正在寻找它。

由于这在API标题中有记录(尽管不在实际文档中),因此使用它应该是非常安全的。

此默认行为已在3.0 API中更改。

在3.0中,“ _ segmentedControlFlags ”已更改为“ momentary ”属性,该属性仍可在UISegmentedControl.h头文件中找到。

通过类别访问_segmentedControlFlags被视为使用私有API,因此违反了Apple的许可协议,正如我今天必须学习的那样。 直到现在,我想,类别是一个语言function,以修复别人可怕的类设计…