2011-04-23 3 views
2

모달로 표시된 컨트롤러의 viewDidDisappear:에서 서브 클래 싱을 필요로하지 않고 (애니메이션이 끝난 후) 사라진 뷰에 관심이있는 사람을 알리기 위해 콜백을 추가했습니다. 콜백에 등록 된 컨트롤러 중 하나가 UIAlertView입니다. 그러나 경고가 표시되면 버튼이 반응하지 않습니다. 또 다른 하나는 자신에게 서브 뷰를 추가하는 것입니다. 뷰의 버튼이 반응하지 않습니다. 단추의 핸들러가 트리거되지 않습니다. 나는 콜백을 호출 할 때 viewDidDisappear:이 아직 실제로 완료되지 않았다는 사실과 관련이 있다고 가정합니다. 그러나 서브 클래 싱을 대신 사용하더라도 동일한 상황이됩니다. 클릭이 제대로 전달되지 않기 때문에 내 단추를 덮고있는 다른보기가 여전히있을 수 있습니다.viewDidDisappear에 UIAlertView 표시 : 버튼이 반응하지 않습니까?

다음과 같이 누군가가 내가하고있는 일을 수행하는 것이 좋지 않다는 것을 확인할 수 있습니까? (경고를 표시하고 viewDidDisappear에서 하위보기를 추가하는 것). 그러면 흐름을 변경해야하기 때문입니다. 괜찮 으면, 그 밖의 무엇이이 효과를 일으키는 지 알아 내야합니다.

답변

0

대신 viewWillDisappear :에 콜백을 넣었습니다. 적어도 원래 UIView 참조는 여전히 주위에 있습니다.

+0

완료 뷰 컨트롤러 코드에 기회를 줄 것이다 viewWillAppear : 애니메이션이 끝난 후에 만 ​​호출됩니다. 그래서 나는 사건을 잡지 못하기 때문에 다른 시각이 없어 질 때까지 기다릴 수 없습니다. – Krumelur

0

더 나은 솔루션은 호출자를 대리인으로 추가하여 부모 컨트롤러를 통해 모달보기를 닫는 것입니다. 대리인은 모달 컨트롤러를 닫는 프로토콜을 구현합니다. 닫을 준비가되면 모달보기에서 대리자 프로토콜을 호출합니다. 모달 애니메이션을 기각하는 경우, vieWillAppear 전에 호출됩니다 흐름을 변경하는 것을 방지하기 위해

0

, 당신은 경고를 표시하는 타이머를 예약 할 수 있습니다,이 문제가되는

+0

하지만 얼마나 걸릴까요? kludge와 같지만 작동합니다 :-) – Krumelur