2015-01-15 3 views
0

Я создаю UIViewController, в котором хранятся некоторые функции RosyWriter, которые я перерабатываю для создания видеомагнитофона. Экран содержит заголовок, подзаголовок с привязкой к границам, содержащий AVCaptureVideoPreviewLayer (поэтому в этот подъярус добавляется CALayer подъязыка видеоконтента, поэтому я думаю, что он довольно глубоко вложен) и две кнопки, действующие как кнопка переключения - в виде кнопок «Старт» и «Стоп», размещенных в раскадровке для UIViewController.UIView subviews обновляется визуально, но взаимодействует, как в предыдущем состоянии

Кнопка «Пуск» работает нормально, даже если слой предварительного просмотра видео находится на экране и показывает камеру. Однако, когда я начинаю запись, я переключаю кнопки круглыми, делая кнопку «Пуск» скрытой, а кнопка «Стоп» скрыта = «ложь».

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

Когда видеозапись активна, при нажатии кнопки «Стоп» и нажатии кнопки «Пуск», кнопка «Просмотр» недоступна, но кнопка скрытого запуска все еще может быть нажата.

Я попытался перемещать кнопку «Стоп» над UIView, содержащей видео, в случае, если CALayer или что-то еще растягивается с обрезанными границами UIView. Это не помогает. Кнопка остановки всегда действует так, как будто она не включена - но она включена, и ничто не похоже на перекрытие кнопки. Кнопка работает нормально, если UIView, содержащий видео (который, я повторяю, ниже, чем сломанная кнопка) никогда не отображается.

Может ли кто-нибудь подумать, почему это произошло? Я сразу подумал о setNeedsLayout и setNeedsDisplay и попытался просто выбросить некоторые из них, потому что это почти так, как будто представление обновилось моим запросом, чтобы скрыть или показать кнопки, но уровень взаимодействия не обновился.

Благодаря

ответ

0

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

Таким образом, я решил проблему в некотором смысле путем принудительного вызова определенного асинхронного метода делегата в основной очереди. Это не влияет на работу этого конкретного этапа в моем процессе записи.

 Смежные вопросы

  • Нет связанных вопросов^_^