Решение сложно, но возможно.
Проблема в том, что вы пытались изменить выделенный статус в методе действия кнопки, который, как я полагаю, выполняет очистку или проверку в конце действия и переключает выделенный статус. При попытке отладки вы получаете подсвеченный = 1, но в конце он изменится.
Странно, но ваша «кнопка 3 статусов» иногда полезна, когда вы хотите держать кнопку в «выделенном» режиме, например, в «выбранном» режиме, чтобы получить различное действие в зависимости от 3 статусов.
Единственная проблема в том, что вы не смогли проанализировать это или переключить его в подсвеченный режим в методе действия кнопки, так как он сразу переключится в подсвеченный режим, когда пользователь нажмет на него И переключит его обратно в конце.
Решение использует отправку.
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.1 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[theButton setHighlighted:YES];
});
Это сделает трюк, и вы можете использовать 3 статуса.