UISegmentedControl Behavior
Быстрый вопрос о классе UISegmentedControl на iPhone.
Надеемся, что некоторые, возможно, заметили, что в своем состоянии по умолчанию с 2 сегментами сегментированный элемент управления все еще будет переключаться, даже если пользователь нажимает на сегмент, который выбран в данный момент.
Я видел UISegmentedControls в приложениях, которые отрицают это поведение и не переключаются, когда пользователь нажимает на выбранный сегмент. А именно, приложение Apple iTune Store.
Есть ли простой способ предотвратить это поведение, которое я пропускаю, или мне нужно записать некоторую логику в valueChanged?
Я пытался отключить выбранные в данный момент сегменты и включить невыбранные, но это, похоже, меняет внешний вид элемента управления, когда я не хочу, чтобы это делалось.
Есть идеи?
4 ответа
Посмотрите в заголовочном файле UISegmentedControl.h (простой способ - дважды щелкнуть "UISegmentedControl" в XCode с удерживаемой командой).
Там вы увидите несколько элементов в структуре _segmentedControlFlags. Если вы создаете категорию в UISegmentedControl, вы можете манипулировать любым из этих элементов, включая dontAlwaysToggleForTwoSegments, который, как вы можете догадаться по названию, - это то, что вы ищете.
Поскольку это задокументировано в заголовке API (но не в реальной документации), его следует использовать довольно безопасно.
В версии 3.0 _segmentedControlFlags было изменено на свойство " моментальное ", которое все еще можно найти в заголовочном файле UISegmentedControl.h.
Доступ к _segmentedControlFlags через категорию рассматривается как использование частного API и, таким образом, является нарушением лицензионного соглашения Apple, как я должен был узнать сегодня. До сих пор, я думал, категории - это языковая функция, которая исправляет чей-то ужасный дизайн класса...