4

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

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

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

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

我一直在尝试禁用当前选定的段并启用未选定的段,但是当我不希望它这样做时,这似乎会改变控件的外观。

有任何想法吗?

4

4 回答 4

8

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

在那里,您将看到_segmentedControlFlags结构中的许多项目。如果您在 UISegmentedControl 上创建一个类别,则可以操作其中的任何元素 - 包括dontAlwaysToggleForTwoSegments,您可能从名称中猜到这就是您要查找的内容。

由于这已记录在 API 标头中(尽管不在实际文档中),因此使用起来应该很安全。

于 2009-03-11T23:23:16.890 回答
4

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

于 2009-04-18T02:20:54.997 回答
4

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

于 2009-07-20T20:59:29.530 回答
1

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

于 2009-12-09T03:14:35.367 回答