Решение, вероятно, состоит в том, чтобы связать метод IBAction
с событием touchUpInside
и распространить изменение значения там, если вы планируете также изменить выбранный индекс программным путем.
Из того, что мы можем прочитать даже в Руководство по основам какао , события, поступающие из элементов управления пользовательского интерфейса, должны отправляться только в том случае, если событие инициируется в ответ на действия пользователя над элементом управления, а не из-за программного изменения , Это либо мое недоразумение, либо какая-то ошибка UISegmentedControl
.
Мое решение более подробно
Подключите метод IBAction
к событию UISegmentedControl
Touch Up Inside
и перенаправьте параметр sender
в метод действия, обрабатывающий Value Changed
. Таким образом, если происходит программное изменение значения, элемент управления не будет вызывать обработчик изменения значения. Только при непосредственном воздействии пользователя на элемент управления.
Единственное, что нужно решить, это определить, действительно ли выбранный индекс изменился.