UISegmentedControl Behavior - PullRequest
       8

UISegmentedControl Behavior

4 голосов
/ 11 марта 2009

Быстрый вопрос о классе UISegmentedControl на iPhone.

Надеемся, что некоторые, возможно, заметили, что в состоянии по умолчанию с 2 сегментами сегментированный элемент управления все еще будет переключаться, даже если пользователь нажимает на сегмент, который выбран в данный момент.

Я видел UISegmentedControls в приложениях, которые отменяют это поведение и не переключаются, когда пользователь нажимает на выбранный сегмент. А именно, приложение Apple iTune Store.

Есть ли простой способ предотвратить это поведение, которое я пропускаю, или мне нужно записать некоторую логику в valueChanged?

Я пытался отключить выбранные в данный момент сегменты и включить невыбранные, но, похоже, это меняет внешний вид элемента управления, когда я не хочу, чтобы это делалось.

Есть идеи?

Ответы [ 4 ]

8 голосов
/ 12 марта 2009

Загляните в файл заголовка UISegmentedControl.h (простой способ - дважды щелкнуть мышью на «UISegmentedControl» в XCode с удерживаемой командой).

Там вы увидите несколько элементов в структуре _segmentedControlFlags . Если вы создаете категорию на UISegmentedControl, вы можете манипулировать любым из этих элементов, включая dontAlwaysToggleForTwoSegments , который, как вы можете догадаться по названию, - это то, что вы ищете.

Поскольку это задокументировано в заголовке API (но не в реальной документации), его следует использовать довольно безопасно.

4 голосов
/ 21 июля 2009

В 3.0 « _segmentedControlFlags » было изменено на свойство « momentary », которое все еще можно найти в заголовочном файле UISegmentedControl.h .

4 голосов
/ 18 апреля 2009

Это поведение по умолчанию было изменено в API 3.0.

1 голос
/ 09 декабря 2009

Доступ к _segmentedControlFlags через категорию рассматривается как использование частного API и, таким образом, является нарушением лицензионного соглашения Apple, как я должен был узнать сегодня. До сих пор я думал, что Категории - это языковая функция, которая исправляет чей-то ужасный дизайн класса ...

...