Почему свойство userInteractionEnabled не работает на конкретном UIButton?

Это, вероятно, самая разочаровывающая ситуация, с которой я сталкивался, и, вероятно, она имеет самое простое решение.

У меня есть это UIButtonstoreB который правильно инициализируется во время viewDidLoad: зов моего UIViewController, Прежде чем создать кнопку, я создаю 5 других кнопок.

В течение viewDidLoad:Я запускаю этот метод под названием setupFBConditions который определяет, будет ли мой forwardB объект кнопки должен иметь alpha 0,5 с userInteractionEnabled установите в 0. В этом случае кнопка выглядит и работает так, как она должна быть (по сути, как будто ее там нет).

Кроме того, во время этой конкретной анимации, которая выполняется на одном из моих UIView объекты, я решил установить userInteractionEnabled собственность моего restartB равным 0 (чтобы во время анимации не происходило никакого взаимодействия. Это исполнение также успешно.

Тем не менее, когда я решил написать:

storeB.userInteractionEnabled = NO;
storeB.alpha = 0.5;

в начале анимации (с намерением сохранить это состояние до завершения игры или restartB прослушивается снова), и NSLog объект кнопки, журнал говорит, что userInteractionEnabled свойство NO а также alpha 0,5, как и должно быть. Однако ни в коем случае эти свойства не отражаются в пользовательском интерфейсе.

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

Я не собираюсь публиковать больше кода, потому что нет ничего, кроме двух строк выше. Это, по-видимому, просто проблема + решение.

************ ОБНОВИТЬ **************

Вот отчет журнала в конце одного из моих жестов смахивания (после storeB.userInteractionEnabled = NO;):

<UIButton: 0x1585ae80; frame = (270 8; 42 42); alpha = 0.5; opaque = NO; 
userInteractionEnabled = NO; layer = <CALayer: 0x15899da0>>  
<UIView: 0x1592bba0; frame = (0 0; 320 568); layer = <CALayer: 0x15934ae0>>

Кадр правильный, настройки альфа и взаимодействия правильные, а кадр суперпредставления (0,0,320,568) - это именно то, что и должно быть.

*********** ВТОРОЕ ОБНОВЛЕНИЕ **************

В случае, если кто-то считает это полезным... проверьте _retainCount собственность вашего UIView/UIButton и посмотрите, выглядит ли он необычно высоко, принимая во внимание все операции, выполненные с объектом. Мой счет сохранения был 4, когда он должен был быть 2, поэтому каждый раз, когда я менял свойство (то, что я думал, был мой первый случай storeB), на самом деле это влияло только на второй случай (о котором я даже не подозревал).

0 ответов

Другие вопросы по тегам