UISegmentedControl行为

时间:2009-03-11 09:58:54

标签: ios objective-c iphone uikit uisegmentedcontrol

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

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

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

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

我一直在尝试禁用当前选定的细分并启用未选择的细分,但这似乎会在我不希望的情况下改变控件的外观。

有什么想法吗?

4 个答案:

答案 0 :(得分:8)

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

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

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

答案 1 :(得分:4)

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

答案 2 :(得分:4)

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

答案 3 :(得分:1)

通过类别访问_segmentedControlFlags被视为使用私有API,因此违反了Apple的许可协议,正如我今天必须学习的那样。到目前为止,我认为,类别是一种语言功能,可以修复别人可怕的课程设计...