2015-01-15 2 views
0

저는 비디오 레코더를 만들기 위해 다시 작성하는 일부 RosyWriter 기능을 포함하는 UIViewController를 만듭니다. 화면에는 제목, AVCaptureVideoPreviewLayer가 포함 된 클리핑 된 경계 하위보기가 포함되어 있습니다 (따라서 비디오 내용의 하위 계층 CALayer가 하위보기에 추가되므로 상당히 심도가 높습니다). 토글 단추처럼 작동하는 두 개의 단추 - UIViewController의 스토리 보드에 배치 된 시작 및 중지 버튼의 형태로.UIView 하위보기가 시각적으로 업데이트되지만 이전 상태와 마찬가지로 상호 작용합니다.

비디오의 미리보기 레이어가 화면에 나타나고 카메라가 보이더라도 시작 버튼이 제대로 작동합니다. 하지만 녹음을 시작하면 단추가 반전되어 시작 단추가 숨겨지고 중지 단추가 숨김으로 설정됩니다.

시작 버튼이 작동합니다.이 버튼은 비디오 미리보기가 화면에 표시되고 업데이트 될 때 눌러 지지만 실제 녹음 (버퍼에서 샘플을 가져 와서 파일에 쓰는 것 - 내가 볼 수있는 한 UIKit과 관련 없음)에 있습니다. 시작되지 않았습니다.

비디오 녹화가 활성화되어 있고 중지 단추가 표시되고 시작 단추가 숨겨져 있으면 보이는 중지 단추를 누를 수 없지만 숨겨진 시작 단추를 계속 누를 수 있습니다.

나는 CALayer 또는 다른 것들이 클리핑 된 UIView 경계 밖으로 뻗어있는 경우에 대비하여 비디오가 포함 된 UIView 위에 정지 버튼을 이동 시키려고했습니다. 이것은 도움이되지 않습니다. 중지 버튼은 항상 활성화되어 있지 않은 것처럼 작동하지만 활성화되어 있고 버튼과 겹치는 부분이 없습니다. 비디오를 포함하는 UIView (끊어지지 않을 단추는 깨진 단추보다 낮습니다)가 절대로 표시되지 않으면 단추가 제대로 작동합니다.

왜이 일이 일어날까요? 나는 setNeedsLayout과 setNeedsDisplay에 대해 즉시 생각하고 버튼을 숨기거나 보여 주려는 요청으로 뷰가 업데이트되었지만 상호 작용 레이어가 업데이트되지 않았기 때문에 그 중 일부를 던지려고했습니다.

감사

답변

0

는 지금이 파견 큐의 나의 무지를 사용 (또는 오용) 때문이라고 생각합니다. 여전히 보이지 않는 버튼과 어떻게 상호 작용할 수 있었는지 확실하지 않습니다. 아마도 자신의 상태 변경이 부분적으로 즉시 응답하고 나머지는 기본 대기열 (시각적 새로 고침 예를 들어,).

그래서 특정한 의미의 비동기 대리자 메서드를 주 큐에서 호출하도록하여이 문제를 해결했습니다. 내 녹음 과정에서이 특정 단계의 작동에는 영향을 미치지 않습니다.

관련 문제