Почему нулевой CALayer.speed UIView останавливает работу кнопок UIAlertController? - PullRequest
0 голосов
/ 14 июня 2019

У меня есть пользовательский индикатор активности, который является полноэкранным UIView с CABasicTransformation для вращения, добавленным к его свойству layer .Когда я устанавливаю layer.speed = 0 в своем пользовательском методе hideActivityIndicator() и затем представляю предупреждение, я не могу взаимодействовать с его кнопками или чем-либо еще, в то время как, например, перед тем, как представить предупреждение, я могу выбрать ячейку в табличном представлении в том же контроллере после того, как яустановить layer.speed = 0.Чтобы было ясно, что это единственная строка кода, которая производит эффект.Если я закомментирую это, оповещение работает прекрасно.

1 Ответ

1 голос
/ 14 июня 2019

По умолчанию анимация приводит к тому, что элементы пользовательского интерфейса перестают принимать «взаимодействие с пользователем» (касания).

Я предполагаю, что при установке скорости анимации на 0 анимация всегда работает, никогда не заканчивается, и взаимодействие с пользователем отключается.

Возможно, вы сможете установить флаг allowUserInteraction на своих кнопках, но allowUserInteraction является свойством UIView.AnimationOptions, поэтому я не уверен, как вы это сделаете.

Вы можете попробовать использовать анимацию UIView в свойстве transform вида, а не CABasicAnimation на слое. Тогда вы можете использовать свойство allowUserInteraction при настройке анимации.

(Обратите внимание, что под обложками анимации UIView фактически создают CAAnimations, а установка скорости анимации слоя на 0 все равно приведет к остановке анимации.)

...